如何将Django Views中的用户的REQUEST对象从一个用户区分到另一个用户?

时间:2017-07-24 15:51:18

标签: django django-views django-messages django-request

我不确定我所做的是对还是错。但是这个功能让我在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的错误页面,说有#No; NoReverseMatch"。 但是当我重新加载表单时(通过浏览器正常刷新,在" url"映射到get_form(request)),我发现我添加的错误消息第messages.add_message(request, messages.INFO, error_message)行被带到了html(some_html.html)。甚至认为错误发生了,我从未成功重定向到网址。

现在我明白messages.add_message()有点捎带请求,,在发生错误的情况下不应该被销毁。重定向未成功执行的情况。

为什么重新加载时邮件仍在请求对象中?

它不应该被销毁(因为它是一个完全独立的GET请求;我通过重新加载从我的浏览器启动它)?

提前致谢。

1 个答案:

答案 0 :(得分:0)

您完全误解了消息框架的工作原理。它不会将消息存储在请求中;它们存储在会话中。