如何为我的 django 应用程序编写注销功能?

Posted

技术标签:

【中文标题】如何为我的 django 应用程序编写注销功能?【英文标题】:How to write a logout function for my django app? 【发布时间】:2013-01-22 22:26:35 【问题描述】:

这里是views.py

def authent(request):
    user = request.POST['username'] 
    passw = request.POST['password']
    featureDetail = []
    loginrole = People_Login.objects.get(User_Name = user, Password = passw)
    features = Role_FGroup_FSubGroup_FItems_Map.objects.filter(Role_Id = loginrole.id)
    for p in features:
        dic = 
        dic['ID'] = p.id
        dic['Role_ID'] = p.Role_Id.id
        dic['FGID'] = p.Feature_Group_Id.id
        dic['FSGID'] = p.Feature_SubGroup_Id.id
        dic['FIID'] = p.Feature_Items_Id.id
        dic['SFGNAME'] = p.Feature_Group_Id.Name
        dic['SFSGNAME'] = p.Feature_SubGroup_Id.Name
        dic['SFINAME'] = p.Feature_Items_Id.Name
        featureDetail.append(dic)
    featuresgroups = Role_Feature_Group_Map.objects.filter(Role_Id = loginrole.Role_Id.id)
    request.session['feature_list'] = featureDetail
    request.session['featuresgroups'] = featuresgroups
    return render_to_response('UAM/index.html',"contacts":featureDetail,'len':len(featureDetail)-1,'test1':"shiva",'test2':"shiva","featuresgroups":featuresgroups) 

对于这个authent函数如何写我的注销函数 (因为我是 Django 新手)?请放轻松,给我注销功能的代码。

【问题讨论】:

【参考方案1】:

真的就是这么简单:

from django.contrib.auth import logout

def logout_page(request):
    logout(request)
    return HttpResponseRedirect('/')

【讨论】:

OP 不是使用django.contrib.auth,而是自定义解决方案。但是,从logout 读取源代码后,我可以看到它实际上会完成清除会话数据的工作,而不会触及数据库中的任何内容(这可能会导致错误,因为所需的表不存在)。所以我想这确实是一个有效的答案......【参考方案2】:

我建议使用 Django 的 built in authentication features 而不是推出自己的。否则,您一定会犯很多错误(例如storing plain text passwords,我认为这是您正在做的事情)并重新发明许多***(例如会话处理、组和权限等)。如果您需要存储的用户信息超出 Django 支持的范围,可以通过表单或user profiles 进行。

无论如何,如果“登录”是指“在会话中拥有这些值”,要“注销”,您只需要删除它们,不是吗?

【讨论】:

以上是关于如何为我的 django 应用程序编写注销功能?的主要内容,如果未能解决你的问题,请参考以下文章

我如何为 django 1.8 编写初始数据

如何为 django-rest-framework api 编写单元测试?

如何为访问控制编写 Django 模板标签?

Django 自动注销和页面重定向

如何为使用两个数据库(mysql和mongo)的django项目编写单元测试

关于如何为聊天应用设计良好架构的建议?