2013-02-07 47 views
1

這裏是views.py如何爲我的django應用程序編寫註銷功能?

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

我建議使用Django的built in authentication features而不是自己推出。否則,你肯定會犯很多錯誤(比如storing plain text passwords,我認爲這是你正在做的事情)並且重塑了許多輪子(例如會話處理,組和權限等)。如果您需要存儲比Django支持的用戶更多的信息,可以使用表格或user profiles

無論如何,如果通過「登錄」你的意思是「在會話中有這些值」,要「註銷」,你只需要刪除它們,不是嗎?

1

這真的是這樣簡單:

from django.contrib.auth import logout 

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

的OP是** **不使用'django.contrib.auth',而是一個定製的解決方案。但是,從'logout'讀取源代碼後,我可以看到它實際上會執行清除會話數據的工作,而不觸及數據庫中的任何內容(這可能會導致錯誤,因爲重新分配的表不存在)。所以我想這確實是一個有效的答案... – mgibsonbr