Django内置登录视图和错误
-
29-09-2019 - |
题
我正在使用 django.contrib.auth.views.login and
.logout
视图。非常方便,开箱即用,将再次部署AAA+等。
出现问题是因为我不使用单独的登录页面,而是每个页面中都有一个登录框(当然,除非用户登录)。因此,当用户名/密码组合错误时,我会遇到错误。我应该选择这三个路径中的哪个?
- 有一种秘密方法可以重定向到接下来的成功,而且是错误的。如果是这样,请告诉我!
- 我写自己的登录视图,同时使用Django的消息系统
- 我编写一个登录页面(好吧,它只是缺少模板),这样我就可以利用Django auth系统的全部令人敬畏。
解决方案
可能的解决方案之一(列表中的第一个 +第三选择):
- 您必须提供特殊登录页面(这是定义的
registration/login.html
),对于用户,每个普通页面都有登录表格; - 如果用户正常登录(此逻辑处理
django.contrib.auth.views.login
):- 对于普通页面:将用户重定向到她介绍的页面;
- 用于登录页面:如果有
next
参数,重定向,否则重定向到主页;
- 如果用户未能登录:Redirect(或Redraw)登录页面,则提供了错误;
- 如果用户在:普通页面提供注销的链接(如果用户想要重新登录或通过另一个帐户登录,则仍然存在特殊页面)。
在普通页面中,登录表格应该具有这样的东西 <input type="hidden" name="next" value="{{ request.path }}" />
.
在项目设置中:
# in settings.py
LOGIN_URL = '/login' # this should coinside with url pattern of login view
LOGOUT_URL = '/logout' # same but for logout view
LOGIN_REDIRECT_URL = '/' # url to main page
NB:我不使用django的buildin注销视图,而是使用自己的:几乎相同,但仅针对发布请求才登录。这将不允许用户注销 <img src='my_site/logout' />
恶意代码。
不隶属于 StackOverflow