簡體   English   中英

Django登錄無效

[英]Django login doesn't work

我試圖創建一個如下的登錄視圖:

def user_login(request):
    if request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')

        user = authenticate(username=username, password=password)

        if user:
            if user.is_active:
                login(request, user)
                return HttpResponseRedirect('rango/index.html')
            else:
                return HttpResponse('Your Rango account is disabled!')
        else:
            print("Invalid login details: {0}, {1}".format(username, password))
            return HttpResponse("Invalid login details supplied!")
    else:
        return render(request, 'rango/login.html', {})

這似乎是正確的方法,但是當我嘗試在瀏覽器中打開頁面時,出現以下錯誤:

TypeError at /rango/login/
login() missing 1 required positional argument: 'user'
Request Method: GET
Request URL:    http://localhost:8000/rango/login/

Django Version: 1.9.10
Exception Type: TypeError
Exception Value:    
login() missing 1 required positional argument: 'user'
Exception Location: C:\Users\Johannes\tangowithdjango\lib\site-packages\django\core\handlers\base.py in get_response, line 147
Python Executable:  C:\Users\Johannes\tangowithdjango\Scripts\python.exe
Python Version: 3.6.0
Python Path:    
['C:\\Users\\Johannes\\tangowithdjango\\tango_with_django_project',
 'C:\\Users\\Johannes\\tangowithdjango\\Scripts\\python36.zip',
 'C:\\Users\\Johannes\\AppData\\Local\\Programs\\Python\\Python36\\DLLs',
 'C:\\Users\\Johannes\\AppData\\Local\\Programs\\Python\\Python36\\lib',
 'C:\\Users\\Johannes\\AppData\\Local\\Programs\\Python\\Python36',
 'C:\\Users\\Johannes\\tangowithdjango',
 'C:\\Users\\Johannes\\tangowithdjango\\lib\\site-packages']
Server time:    Thu, 12 Jan 2017 17:56:38 +0100

是否有人遇到類似問題或知道該問題的解決方案? 我已經搜索並嘗試了一下,但找不到答案。

您的代碼看起來不錯,請確保您正在導入此代碼

from django.contrib.auth import authenticate, login

還要檢查您的意見,這是第一個網址:

url(r'^login', example_views.login, name='log'),

您必須更改為:

url(r'^log', example_views.log, name='log'),

我遵循了該教程,並遇到了相同的錯誤。

我通過更正urls.py中的一行來解決它

urlpatterns = patterns(
    ...
    url(r'^login/$', views.login, name='login'),
)

到這個:

urlpatterns = patterns(
    ...
    url(r'^login/$', views.user_login, name='login'),
)

它應該是您創建的登錄視圖的名稱,在您的情況下為'user_login'。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM