用户在注册和注销后应该被重定向到登录页面。在这两种情况下,都必须显示一条指示相关消息的消息。
使用 django.contrib.auth.views.login 如何发送这些 {{ info }} 消息。
一个可能的选择是将 auth.views 复制到新的注册模块并包括所有必要的东西。但这似乎还不够干。
什么是最好的方法。
更新:问题阐述:
对于正常情况,当您想向某些用户指示您可以使用的操作的响应时
request.user.message_set.create()
这会创建一条消息,该消息会显示在其中一个模板中并自动删除。
然而,此消息系统仅适用于继续具有相同 session ID 的登录用户。在注册的情况下,用户未通过身份验证,在由于 session 更改而注销的情况下,无法使用该系统。
除此之外,django.contrib.auth.views 中的内置 login 和 logout 函数返回一个“HttpResponseRedirect”,这使得不可能向模板添加另一个变量。
我尝试在请求对象本身上设置一些东西
request.info='Registered'
并在不同的 View 中检查它
try:
info = request.info:
del request.info
except:
info = ''
#later
render_to_response('app/file',{'info':info})
即使这样也行不通。
很明显,我可以定义一个 registered.html 并在其中添加此静态消息,但我懒得编写另一个模板并尝试将其实现为 DRY。
我意识到“注册”消息和“注销”消息的情况不同。而我使用的 DRY 方法,我将写为答案。
请您参考如下方法:
如果消息是静态的,您可以为这些 View 使用自己的模板:
(r'^accounts/login/$', 'django.contrib.auth.views.login', {'template_name': 'myapp/login.html'}
来自docs .
