Django登录 - 缺少1个必需的位置参数

时间:2015-04-29 10:10:29

标签: python django

我有简单的登录视图:

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'

我做错了什么?

4 个答案:

答案 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')