Django Views 中用户的 REQUEST 对象如何区分?
How is REQUEST object for a user in Django Views diffrentiated from one to another?
我不确定我的做法是对还是错。但是这个功能让我遇到了 Django Views 中发生的一个非常深奥的事件。
所以代码:
from django.contrib.messages import get_messages
from django.contrib import messages
#Other required modules.
@require_GET
def get_form(request):
#code to get a form.
storage = get_messages(request)
for message in storage:
message = message
if message:
context['message'] = message
html = render(request , 'some_html.html' , context)
return HttpResponse(html)
@require_POST
def submit_form(request):
#Initialize a bounded form.
if form.is_valid():
form.save()
messages.add_message(request, messages.INFO, success_message)
else:
messages.add_message(request, messages.INFO, error_message)
# ABOVE LINE IS WHERE THE ISSUE OCCURS
return redirect('reverse_url_mapping_to_get_form')
# Above line is redirecting to "get_form" function(The function preceding this one).
问题 : 现在我遇到的奇怪的事情发生在我在return redirect('reverse_url_mapping_to_get_form')
(提到的代码的最后一行。)中输入错误时。
明明遇到了Django的错误页面,说有"NoReverseMatch"。 但是当我重新加载表单时(通过浏览器正常刷新,在"url"映射到get_form(request)
),我发现我在行 messages.add_message(request, messages.INFO, error_message)
被带到 html(some_html.html)。即使发生了错误,我也从未成功重定向到 url。
现在我明白了 messages.add_message()
有点背负了请求,但是,它不应该在发生错误的情况下被销毁吗?重定向未成功执行的情况。
为什么重新加载时消息仍在请求对象中?
它不应该被销毁吗(因为它是一个完全独立的GET请求;我是通过重新加载从浏览器发起的)?
提前致谢。
您完全误解了消息框架的工作原理。它不存储请求中的消息;它们存储在会话中。
我不确定我的做法是对还是错。但是这个功能让我遇到了 Django Views 中发生的一个非常深奥的事件。
所以代码:
from django.contrib.messages import get_messages
from django.contrib import messages
#Other required modules.
@require_GET
def get_form(request):
#code to get a form.
storage = get_messages(request)
for message in storage:
message = message
if message:
context['message'] = message
html = render(request , 'some_html.html' , context)
return HttpResponse(html)
@require_POST
def submit_form(request):
#Initialize a bounded form.
if form.is_valid():
form.save()
messages.add_message(request, messages.INFO, success_message)
else:
messages.add_message(request, messages.INFO, error_message)
# ABOVE LINE IS WHERE THE ISSUE OCCURS
return redirect('reverse_url_mapping_to_get_form')
# Above line is redirecting to "get_form" function(The function preceding this one).
问题 : 现在我遇到的奇怪的事情发生在我在return redirect('reverse_url_mapping_to_get_form')
(提到的代码的最后一行。)中输入错误时。
明明遇到了Django的错误页面,说有"NoReverseMatch"。 但是当我重新加载表单时(通过浏览器正常刷新,在"url"映射到get_form(request)
),我发现我在行 messages.add_message(request, messages.INFO, error_message)
被带到 html(some_html.html)。即使发生了错误,我也从未成功重定向到 url。
现在我明白了 messages.add_message()
有点背负了请求,但是,它不应该在发生错误的情况下被销毁吗?重定向未成功执行的情况。
为什么重新加载时消息仍在请求对象中?
它不应该被销毁吗(因为它是一个完全独立的GET请求;我是通过重新加载从浏览器发起的)?
提前致谢。
您完全误解了消息框架的工作原理。它不存储请求中的消息;它们存储在会话中。