Django身份验证错误

时间:2014-02-25 19:47:55

标签: python django authentication

我是django中的新手。我想验证用户身份。但我无法使用身份验证功能。我已经查看了django中的身份验证功能。并且它总是显示TypeError。我在不同的时间使用了unicode和string,但总是显示TypeError。 请任何帮助将不胜感激。 我正在附上我的代码:

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)

1 个答案:

答案 0 :(得分:0)

首先,您自己定义了一个“登录”视图,所以当您尝试调用login(request, user)时(我假设是Django内置的“登录”功能设置用户会话),而是调用你的功能:

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

其次,TypeError出现在哪里?我假设您已经知道了Django traceback错误页面中出现的错误的性质,如果您可以发布回溯本身的“复制并粘贴视图”,那将非常有用。

您还可以通过一些快捷功能轻松清理您的视图。 :)

但是,由于您的问题的性质是如何在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'),
)

另外,为了将来参考,您可以发布整个脚本,以便我们可以看到您在顶部导入的内容。