我制作了一个应用程序并扩展了AbstractUser
以向我的User
模型添加一些字段。之后,一切都按预期进行(登录、创建用户、重置密码…),但当我尝试使用默认值注销时
django.contrib.auth.LogoutView
或include('django.contrib.auth.urls')
它将忽略注销。当我回到受限页面时,我可以输入并查看内容,我的用户实际上已经登录
我创建了一个自定义注销视图,如下所示
def custom_logout(request):
print('Loggin out {}'.format(request.user))
auth.logout(request)
print(request.user)
return HttpResponseRedirect('/restrictedpage')
在restrictedpage上,我有一个打印语句向用户显示
print("User logged: {}".format(request.user))
单击“注销”时,控制台中会显示以下内容:
"GET /restrictedpage HTTP/1.1" 200 19820
User logged: ceterre
----- This is where i click logout ------
Loggin out AnonymousUser
AnonymousUser
"GET /accounts/logout/ HTTP/1.1" 302 0 ----- this redirects me to /restrictedpage
User logged: ceterre
"GET /restrictedpage HTTP/1.1" 200 19820
这从字面上解释为:
- I know ceterre is logged
- logging out ceterre
- user logged: AnonymousUser
- redirect to restricted page (where I should have no access since im supposedly logged out)
- user logged: ceterre (without any login or anything...)
这对我有用,对你也应该有用
登录和注销是Django(也是AbstractUser)的一部分,所以您不需要扩展这部分代码。您必须做的一件事是在settings.py文件中添加以下两行代码:
这里有一个适用于Django 3+的解决方案
用
my_admin
模块替换django.contrib.admin
AdminConfig(my_admin/apps.py):
AdminSite(my_admin/admin_site.py):
相关问题 更多 >
编程相关推荐