Has*_*war 1 python django django-models django-forms python-3.x
我是一个新的Django用户,我刚刚在Django 1.11中为我的网站创建了一个注册和登录系统.当我去我网站的登录部分时,我很震惊.我得到的错误如上所述"login()缺少1个必需的位置参数:'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'),
]
Run Code Online (Sandbox Code Playgroud)
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})
Run Code Online (Sandbox Code Playgroud)
你输入错了.您需要导入login视图:
from django.contrib.auth.views import login
Run Code Online (Sandbox Code Playgroud)
您已导入login实际记录用户的功能.
login您正在使用的视图在Django 1.11中已弃用.您可以切换到新的基于类LoginView:
from django.contrib.auth.views import LoginView
url(r'^login/$', LoginView.as_view(), name='login'),
Run Code Online (Sandbox Code Playgroud)