这是我在
urls.py
文件中的页面网址:
path('login/',views.login_view, name="login"),
这是我的页面视图,包含
views.py
文件:
def login_view(request):
if request.method == "POST":
user_name = request.POST.get("username")
pass_word = request.POST.get("password")
user = authenticate(request, username=user_name, password=pass_word)
# print("user1 -->", user)
if user is not None:
# print("user-->",user)
login(request, user)
return render(request, "index.html")
else:
return render(request,"http://127.0.0.1:8000/login")
else:
# return render(request, "order.html")
return render(request, "login.html")
我收到的错误是:
/login/logincheck/login() 处的类型错误缺少 1 个必需的位置 参数:'用户'
首先创建一个
forms.py
文件:
from django import forms
class LoginForm(forms.Form):
username = forms.CharField(max_length=63)
password = forms.CharField(max_length=63, widget=forms.PasswordInput)
你的
views.py
应该看起来像这样:
from django.contrib.auth import login, authenticate
from . import forms
def login_view(request):
form = forms.LoginForm()
message = ''
if request.method == 'POST':
form = forms.LoginForm(request.POST)
if form.is_valid():
user = authenticate(
username=form.cleaned_data['username'],
password=form.cleaned_data['password'],
)
if user is not None:
login(request, user)
message = f'Hello {user.username}! You have been logged in'
else:
message = 'Login failed!'
return render(
request, 'authentication/login.html', context={'form': form, 'message': message})
只是为了添加@enes islam 的方法...他发布的内容作为答案是可以的,但根据您的项目,您的
views.py
文件中有另一个名为 login
的视图,所以也许它正在使用该视图而不是 django
login
您导入的方法。
# You have this import line here
from django.contrib.auth import authenticate, logout, login
# But I noticed further down you have a defined login method
def login(request): # -> rename this method name to loginDjano or another name.
return render(request, "login.html")
定义的方法才是这里真正被调用的...所以我建议您删除或重命名该方法,然后继续并再次使用该行。
if user is not None:
# Remember to pass both request and user objects to this login method
login(request, user)
message = f'Hello {user.username}! You have been logged in'
else:
message = 'Login failed!'
理想情况下,这应该可行。
我有同样的错误,我读了这个主题。我无法解决我的错误。
> RuntimeError:模型类 allauth.account.models.EmailAddress 没有 声明显式 app_label 并且不在 INSTALLED_APPS 中的应用程序中。