2013-01-14 50 views
0

我有一個登錄和查詢功能是這樣的:全局名稱user_id在Django中沒有定義?

def login_backend(request): 
    if request.method == 'POST': 
     username = request.POST['username'] 
     username1 = ''.join(username) 
     password = request.POST['password'] 
     password = ''.join(password) 
     password1 = hashlib.sha1(password).hexdigest() 
     user = authenticate(username=username1, password=password1) 
     global user_id 
     user_id = request.user.id 
     if user is None: 
      return HttpResponseRedirect('/login_backend/') 
     else: 
      return HttpResponseRedirect('/overview/') 
    else: 
     return render_to_response('login_backend.html', context_instance=RequestContext(request)) 

def show_files(request): 
    b = File.objects.get(id=user_id) #Get the user id from session .delete() to use delete 
    return render_to_response('index.html', {'result': b}, context_instance=RequestContext(request) 

我收到此錯誤:

Exception Type: NameError at /overview/ 
Exception Value: global name 'user_id' is not defined 

我在做什麼錯?

回答

1

global user_id沒有聲明一個全局變量。它只是告訴python這個變量是一個全局範圍變量。我不喜歡你試圖在全局變量中存儲user_id。始終在您的視圖中使用request.user.id訪問當前用戶標識。

這在log_backend鑑於一段代碼也是錯誤的:

​​

只是將其刪除你不需要它。您還需要在authenticate之後做login(request, user),因爲authenticate功能只是檢查用戶名和密碼是否正確。

user = authenticate(username=username1, password=password1) 
login(request, user) 
+0

我得到None值。 – user1881957

+0

你在哪裏得到'沒有'價值?請更具體一些。 –

+0

像你說的,我得到用戶的ID,一旦他們登錄,所以我在show_files中使用request.user.id作爲:user_id = request.user.id並在模板index.html中使用{{user_id}},它返回None值。 – user1881957

相關問題