我有一些“保存”代码,在成功创建记录后使用 Django 消息传递框架设置成功消息,然后重定向回主“application_update”视图。我无法确定为什么这些消息没有通过重定向。在执行“render_to_response”时消息传递似乎工作得很好,但在执行“重定向”时却不行。
views.py 中的函数片段(如果是 POST):
if ovrd_form.is_valid():
fields = {'application': ovrd_form.cleaned_data['application'],
'course': ovrd_form.cleaned_data['course'],
* other field/values *
}
try:
overrides = Overrides(**fields)
overrides.save()
success_msg = 'Override creation was successful.'
create_message(request, success_msg, 'success')
except Exception, exception:
return HttpResponse('Error: ' + str(exception))
return redirect('application_update', app_id=app_id)
create_message() 函数:
from django.contrib import messages
def create_message(request, msg, msg_type):
""" build a message & sets the correct message.type """
if msg_type == 'error':
django.contrib.messages.error(request, msg)
elif msg_type == 'warning':
django.contrib.messages.warning(request, msg)
elif msg_type == 'success':
django.contrib.messages.success(request, msg)
elif msg_type == 'info':
django.contrib.messages.info(request, msg)
elif msg_type == 'debug':
django.contrib.messages.debug(request, msg)
所有模板都继承了这段代码:
{% if messages %}
{% for message in messages %}
{% comment %}force -danger if error type for bootstrap css class{% endcomment %}
{% if message.tags == 'error' %}
<div class="alert alert-danger">
{% else %}
<div class="alert alert-{{ message.tags }}">
{% endif %}
<button type="button" class="close" data-dismiss="alert">×</button>
<span>{{ message }}</span>
</div>
{% endfor %}
{% endif %}
任何帮助将不胜感激。