用户在注册和注销后应重定向到登录页面。在这两种情况下,都必须显示一条消息来指示相关消息。
使用 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 方法,我将写为答案。
最佳答案
如果消息是静态的,您可以为这些 View 使用自己的模板:
(r'^accounts/login/$', 'django.contrib.auth.views.login', {'template_name': 'myapp/login.html'}
来自docs .
关于python - 使用 auth.views 进行 django 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/938427/