[英]Getting this error in django “login() missing 1 required positional argument: 'user' ”
I am a new Django user and I just created a registration and login system for my website in Django 1.11. 我是Django的新用户,我刚刚在Django 1.11中为我的网站创建了注册和登录系统。 I am struck when I go to login section of my website. 当我进入网站的登录部分时,我感到震惊。 I get the error as mentioned "login() missing 1 required positional argument: 'user'" and I can't figure out what's wrong with the login function and the variable 'user'. 我收到错误消息,提示“ login()缺少1个必需的位置参数:'user'”,但我无法弄清登录功能和变量'user'出了什么问题。 Kindly help me. 请帮助我。 Thanks in advance. 提前致谢。 Here is my code: 这是我的代码:
urls.py: 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: 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})
You've got the import wrong. 您输入错误。 You need to import the login
view: 您需要导入login
视图:
from django.contrib.auth.views import login
At the moment you have imported the login
function that actually logs the user in. 目前,您已导入实际用于登录用户的login
功能。
The login
view you are using is deprecated in Django 1.11. 您正在使用的login
视图在Django 1.11中已弃用。 You can switch to the new class-based LoginView
: 您可以切换到新的基于类的LoginView
:
from django.contrib.auth.views import LoginView
url(r'^login/$', LoginView.as_view(), name='login'),
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.