Skip to main content
 首页 » 编程设计

python之在 django "login() missing 1 required positional argument: ' 用户中出现此错误“”

2025年05月04日24freeliver54

我是 Django 的新用户,我刚刚在 Django 1.11 中为我的网站创建了一个注册和登录系统。当我进入我网站的登录部分时,我感到很震惊。我收到如前所述的错误“login() missing 1 required positional argument: 'user'”,我无法弄清楚登录函数和变量“user”有什么问题。请帮助我。提前致谢。这是我的代码:

urls.py:

from django.conf.urls import url 
from . import views 
from django.contrib.auth import login 
 
 
app_name='one' 
 
urlpatterns = [ 
    url(r'^games$',views.games,name='games'), 
    url(r'^others$',views.others,name='others'), 
    url(r'^about$',views.about,name='about'), 
    url(r'^upload$',views.UploadFile.as_view(),name='upload'), 
    url(r'^register$',views.UserFormView.as_view(),name='register'), 
    url(r'^login/$', login, name='login'), 
 
] 

views.py:

from django.shortcuts import render,redirect 
from django.contrib.auth import authenticate, login 
from django.views.generic.edit import CreateView 
from .models import file 
from django.views.generic import View 
from .forms import user_form 
class UserFormView(View): 
    form_class = user_form 
    template_name = 'one/register_form.html' 
 
    def get (self,request): 
        form = self.form_class(None) 
        return render(request,self.template_name,{'form':form}) 
 
    def post (self,request): 
        form = self.form_class(request.POST) 
        if form.is_valid(): 
            user = form.save(commit = False) 
            username= form.cleaned_data['username'] 
            password= form.cleaned_data['password'] 
            user.set_password(password) 
            user.save() 
 
            user= authenticate(username=username, password=password) 
 
            if user is not None: 
 
                if user.is_active: 
                    login(request, user) 
                    redirect('one:profile') 
 
        return render(request,self.template_name,{'form':form})  

请您参考如下方法:

你输入错误。您需要导入 login View :

from django.contrib.auth.views import login 

目前您已经导入了 login实际登录用户的函数。

您正在使用的 login View 在 Django 1.11 中已弃用。您可以切换到新的基于类的 LoginView :

from django.contrib.auth.views import LoginView 
 
url(r'^login/$', LoginView.as_view(), name='login'),