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

4

我有一个简单的登录界面:

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'

我做错了什么?

1
代码看起来没问题,确保在修改源代码后重新启动服务器。 - Ionut Hulub
4个回答

3
我遇到了同样的错误。我的文件urls.py中有这条路由:
url(r'^login', navigoWeb_views.login, name='log'),

我将其改为:

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

检查你的路由。


0

我们可能遇到了相同的错误。

我通过在urls.py中更正一行代码来解决它。

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

变成这样:

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

这应该是您创建的登录视图的名称,对于您来说是“logowanie”。


0

你的代码看起来没问题,检查一下确保你的导入正确。

from django.contrib.auth import authenticate, login


0

你的问题出在 logwanie 视图函数的定义上。你在使用不同的名称调用了同一个函数。

当你调用函数 login(request, user) 时,将其改为 logowanie(request, user)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接