我遵循文档将必要的内容导入到我的设置、视图和模板中。然而,没有消息显示。
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 %}我应该如何调试这个?
发布于 2014-02-06 20:14:01
消息传递框架使用处理器将消息传递给模板。为了确保将来自context_processors的变量实际添加到呈现模板的上下文中,您必须在视图中使用RequestContext。
如果使用上下文处理器,则模板应该使用RequestContext呈现。否则,确保消息可用于模板上下文。
您使用的是render_to_response方法,默认情况下它不会这样做。您要么需要指定RequestContext的使用,要么使用render函数代替它,这在默认情况下是这样做的。
return render_to_response('news/add_news.html',
args,
context_instance=RequestContext(request))https://stackoverflow.com/questions/21612678
复制相似问题