Mes*_*zil 0 authentication django django-models
我想停用用户帐户而不是删除它.我想做像user.is_active = False这样的事情.我有一个视图删除用户配置文件,它的工作原理,但现在我需要将其更改为仅停用.这是我的观点:
def delete_profile(request):
user = User.objects.filter(id = request.user.profile.user_id)
try:
user.delete()
except:
messages.error(request,'Please try again.')
return redirect('profile')
messages.success(request, 'Profile successfully deleted.')
return redirect('index')
Run Code Online (Sandbox Code Playgroud)
我尝试了User.is_active = False,它显示成功消息但没有做任何事情.当我在管理面板中检查用户时,它仍然会将用户标记为活动状态.
任何想法我怎么能做到这一点?提前致谢
您应该显示不起作用的代码.但是,根据你的描述,你做了一些错误的事情.
首先,.filter()
始终返回一个查询集,而不是一个实例.要获取实例,您应该使用.get()
.
其次,User
是班级; 实例是user
.
第三,你没有理由在这里进行查询.request.user
是已经在用户实例.无需占用该用户,获取其配置文件,向配置文件询问用户ID,然后执行另一个查询以取回您开始使用的用户.只需使用您已有的用户.
最后,永远不要做空白except
,因为这将捕获各种意外错误并隐藏任何可能出错的事情.只捕获您实际知道如何处理的异常.在这种情况下,您无需处理任何具体内容; 如果出现意外情况,请让Django正常报告错误.
def delete_profile(request):
user = request.user
user.is_active = False
user.save()
messages.success(request, 'Profile successfully disabled.')
return redirect('index')
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4095 次 |
最近记录: |