Kev*_*vin 49 django django-urls
我有一个验证和保存表单的视图.保存表单后,我想重定向到list_object视图,并显示成功消息"客户xyz表单已成功更新..."
HttpResponseRedirect似乎不会起作用,因为它只有一个url参数,无法用它传递字典.
我已经尝试修改object_list的包装器,将dict作为具有必要上下文的参数.我从保存表单的视图内部返回对此包装器的调用.但是,在呈现页面时,url为'/ customer_form /'而不是'/ list_customers /'.我尝试修改请求对象,然后将其传递给object_list包装器,但这不起作用.
谢谢.
Ant*_*ard 72
request.user.message_set在Django 1.2中被弃用,并且自Django 1.4以来已被删除,应该使用消息框架.
from django.contrib import messages
# messages.add_message(request, level, message, extra_tags='', fail_silently=False)
messages.add_message(request, messages.INFO, "Your Message")
Run Code Online (Sandbox Code Playgroud)
然后可以使用以下内容在模板上呈现消息:
{% if messages %}
<ul class="messages">
{% for message in messages %}
<li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
{% endfor %}
</ul>
{% endif %}
Run Code Online (Sandbox Code Playgroud)
Man*_*dan 22
请注意,此处建议的答案仅适用于Django <1.2:
您是否可以控制要重定向到的视图?在这种情况下,您可以在重定向之前将上下文保存在会话中.目标视图可以从会话中获取上下文(并将其删除)并使用它来呈现模板.
如果您唯一的要求是显示消息,那么有更好的方法来执行此操作.您的第一个视图可以为当前使用创建消息,auth并读取和删除第二个视图.像这样的东西:
def save_form(request, *args, **kwargs):
# all goes well
message = _("form for customer xyz was successfully updated...")
request.user.message_set.create(message = message)
return redirect('list_view')
def list_view(request, *args, **kwargs):
# Render page
# Template for list_view:
{% for message in messages %}
...
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
消息将保存到数据库中.这意味着即使重定向也可以访问它们.在渲染模板时会自动读取和删除它们.您将不得不使用RequestContext它来工作.
对于Django => 1.2,请阅读涉及消息的答案
Fed*_*rer 12
要扩展Antoine的有用答案:如果要处理视图模块中的消息,而不是模板:
from django.contrib.messages import get_messages
def my_view(request):
# Process your form data from the POST, or whatever you need to do
# Add the messages, as mentioned above
messages.add_message(request, messages.INFO, form.cleaned_data['name'])
return HttpResponseRedirect('/other_view_url/')
def other_view(request):
storage = get_messages(request)
name = None
for message in storage:
name = message
break
return render(request, 'general/other_view.html', {'name': name})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
38118 次 |
| 最近记录: |