我尝试创建如下的登录视图:
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
有没有人遇到类似的问题或知道解决问题的方法?我已经搜索并试了一下但找不到答案。
答案 0 :(得分:0)
您的代码看起来不错,请确保您要导入此代码
from django.contrib.auth import authenticate, login
同时检查您的观点 这是第一个网址:
url(r'^login', example_views.login, name='log'),
你必须改为:
url(r'^log', example_views.log, name='log'),
答案 1 :(得分:0)
我遵循了该教程并遇到了同样的错误。
我通过更正 urls.py
中的一行来解决这个问题urlpatterns = patterns(
...
url(r'^login/$', views.login, name='login'),
)
进入这个:
urlpatterns = patterns(
...
url(r'^login/$', views.user_login, name='login'),
)
它应该是您创建的登录视图的名称,在您的情况下为“user_login”。