在django开发中我们经常使用到消息系统,例如:当你注册用户时,需要对用户信息作出验证,这样我们可以使用消息来提示用户,信息是否正确。
要完成一个django消息系统需要如下步骤:
- 创建项目
- 创建应用
- 配置消息
- 做数据迁移
- 设置消息
- 显示消息
创建项目
django-admin startproject django-message
创建应用
django-admin startapp myapp
配置消息
当我们使用django-admin startproject django-message
,创建项目时,django已经为我们配置好了,有这几个地方:
INSTALLED_APPS 添加'django.contrib.messages'
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
MIDDLEWARE 添加'django.contrib.sessions.middleware.SessionMiddleware'
和'django.contrib.messages.middleware.MessageMiddleware'
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
TEMPLATES 添加'django.contrib.messages.context_processors.messages'
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': ['myapp/templates'],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
做数据迁移
这里用到session,所以在设置消息之前,必须做数据迁移:
python manage.py migrate
设置消息
我们在视图中设置消息,
from django.shortcuts import render
from django.contrib import messages
def show_msg(request):
add_msg(request)
return render(request,'show_msg.html',{})
def add_msg(request):
messages.add_message(request, messages.INFO, 'Hello world.')
messages.debug(request, '调试消息')
messages.info(request, '一般消息')
messages.success(request, '成功消息')
messages.warning(request, '警告消息')
messages.error(request, '错误消息')
显示消息
在模板中展现消息
{% if messages %}
<ul class="messages">
{% for message in messages %}
<li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
{% endfor %}
</ul>
{% endif %}
输出结果:
- Hello world.
- 一般消息
- 成功消息
- 警告消息
- 错误消息