2014-02-25 103 views
0

我在django.I很新,我想驗證用戶。但我無法使用身份驗證功能來執行此操作。我在django中查看過身份驗證功能。在那裏它總是顯示TypeError。我在不同的時間使用了unicode和string,但總是顯示TypeError。 請任何幫助,將不勝感激。 我attching我下面的代碼:Django身份驗證錯誤

def loginTest(request): 
    if request.method == 'POST': 
     user = authenticate(username=request.POST['username'], password=request.POST['password']) 
     if user is not None: 
      login(request,user) 
      return HomePage(request) 
     else: 
      return HttpResponseRedirect('/login/') 


def login(request): 
    return render_to_response('login.html', {}, context_instance=RequestContext(request)) 


@login_required(login_url='/login/') 
def HomePage(req): 
    templ = get_template('HomePage.html') 
    variables = Context({}) 
    output = templ.render(variables) 
    return HttpResponse(output) 

回答

0

首先,你定義一個「登錄」看待自己,所以當你嘗試調用login(request, user)(我假設是Django的內置在「登錄」功能,設置用戶會話),而是調用您的函數:

def login(request): 
    return render_to_response('login.html',{},context_instance=RequestContext(request)) 

其次,TypeError發生在哪裏?假設你知道Django追溯錯誤頁面出現的錯誤的本質,如果你可以發佈追溯本身的「複製 - 粘貼視圖」,那麼這將非常有用。

你也在做一些時髦的事情,你的意見可以通過一些快捷功能輕鬆清理。 :)

然而,由於你的問題的本質是如何在Django做驗證,這裏是你需要實現手動登錄過程的基礎上,大多隻是從relevant documentation採取:

views.py

from django.contrib.auth import authenticate, login 
from django.contrib.auth.decorators import login_required 
from django.shortcuts import render 

def loginTest(request): 
    username = request.POST["username"] 
    password = request.POST["password"] 
    user = authenticate(username=username, password=password) 
    if user is not None: 
     if user.is_active: 
      login(request, user) 
      HttpResponseRedirect("/") 
     else: 
      HttpResponseRedirect("/login/") 

@login_required(login_url="/login/") 
def HomePage(request): 
    return render(request, "HomePage.html") 

urls.py

from django.conf.urls import patterns, include, url 

from django.contrib import admin 
admin.autodiscover() 

urlpatterns = patterns('', 
    # Examples: 
    # url(r'^$', 'authtest.views.home', name='home'), 
    # url(r'^blog/', include('blog.urls')), 

    url(r'^admin/', include(admin.site.urls)), 
    url(r'^login/', 'django.contrib.auth.views.login'), 
    url(r'^', 'custom.views.HomePage'), 
) 

而且,以供將來參考,這將有助於你來發表您的整個腳本,所以我們可以看到WH在你已經輸入的頂部。