我有简单的登录视图:
def logowanie(request):
if request.method == 'POST':
user = authenticate(
username=request.POST.get('id_username', '').strip(),
password= request.POST.get('id_password', ''),
)
if user is None:
messages.error(request, u'Invalid credentblog.ials')
else:
if user.is_active:
login(request, user)
return HttpResponseRedirect(request.GET.get('next', '/'))
else:
messages.error(request, u'User is not active.')
return render_to_response('registration/login.html', locals(),
context_instance=RequestContext(request))
当我尝试进入登录页面时,我收到错误:
TypeError: login() missing 1 required positional argument: 'user'
我做错了什么?
答案 0 :(得分:3)
我有同样的错误。我的文件urls.py有路径
url(r'^login', navigoWeb_views.login, name='log'),
我把它改为:
url(r'^log', navigoWeb_views.log, name='log'),
检查您的路线。
答案 1 :(得分:0)
您的问题与logwanie
视图中的功能定义有关。您正在使用不同的名称调用相同的函数
您正在调用函数login(request, user)
将其更改为logowanie(request, user)
。
答案 2 :(得分:0)
我们可能有同样的错误。
我通过更正 urls.py
中的一行来解决这个问题urlpatterns = patterns(
...
url(r'^login/$', views.login, name='login'),
)
进入这个:
urlpatterns = patterns(
...
url(r'^login/$', views.logowanie, name='login'),
)
它应该是您创建的登录视图的名称,这是' logowanie'在你的情况下。
答案 3 :(得分:0)
确保函数名称与views.py
文件中定义的名称相同。
因此,使用views.function_name
如下:
url(r'^user_login/$',views.user_login,name='user_login')