Django 1.6消息未显示
我按照步骤将必要的内容导入到我的设置、视图和模板中。但是,没有显示任何消息Django 1.6消息未显示,django,django-messages,Django,Django Messages,我按照步骤将必要的内容导入到我的设置、视图和模板中。但是,没有显示任何消息 MIDDLEWARE_CLASSES = ( 'django.middleware.common.CommonMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middle
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
# Uncomment the next line for simple clickjacking protection:
'django.middleware.clickjacking.XFrameOptionsMiddleware',
)
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
示例视图:
from django.contrib import messages
def add_news(request):
if request.method == 'POST':
form = NewsForm(request.POST)
if form.is_valid():
form.save()
messages.info(request, "News was added")
return HttpResponseRedirect('/')
if request.method == 'GET':
form = NewsForm()
args = {}
args.update(csrf(request))
args['form'] = form
return render_to_response('news/add_news.html', args)
在base.html中,我有:
{% block messages %}
{% if messages %}
<ul class="messages">
{% for message in messages %}
<li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
{% endfor %}
</ul>
{% endif %}
{% endblock messages %}
{%block messages%}
{%if消息%}
{消息%中的消息为%s}
{{message}}
{%endfor%}
{%endif%}
{%endblock消息%}
我应该如何调试它 使用将消息传递到模板。要确保上下文处理器中的变量实际添加到呈现模板的上下文中,必须在视图中使用RequestContext
如果您使用的是上下文处理器,则应使用RequestContext呈现模板。否则,请确保消息可用于模板上下文
您正在使用默认情况下不执行此操作的方法。您需要指定使用RequestContext
,或者使用默认情况下执行此操作的函数
return render_to_response('news/add_news.html',
args,
context_instance=RequestContext(request))
如何在模板中显示消息?此外,POST/GET块的布局可能会遇到问题;如果一个用户提交了一个表单,但它没有进行验证,则会出现错误,因为没有返回响应。我添加了messages块。创建新闻项时没有任何问题,因此我假设表单已验证。添加“context_instance=RequestContext(request)”解决了问题。实际上,返回的render(请求'news/add_news.html',args)看起来非常清晰,所以最好也将其添加到答案中。非常感谢蒂米。