我試圖使用 django.contrib.auth 登錄它給我錯誤
每當我嘗試登錄時,它都會給我以下錯誤
TypeError at /login/user
login() takes 1 positional argument but 2 were given
這是我的登錄模板和 url 從登錄/用戶完美運行
<div class="container border border-2 border-info rounded-2 p-3" style="width: 400px;margin-top: 100px; margin-bottom: 200px;">
<form action="user" method="post">
{% csrf_token %}
<h3 class="p-3">
<small class="text-muted">Login To Your Account</small>
</h3>
<div class="mb-3 form-floating">
<input type="text" class="form-control" id="InputUsername" aria-describedby="emailHelp" name="username" placeholder="Enter Username">
<div id="emailHelp" class="form-text">We'll never share your email with anyone else.</div>
<label for="InputUsername" >Username</label>
</div>
<div >
<input type="password" id="InputPassword" name="password" placeholder="Enter Password">
<label for="InputPassword" >Password</label>
</div>
<div >
<input type="checkbox" id="exampleCheck1">
<label for="exampleCheck1">Remember me</label>
</div>
<button type="submit" >Login</button><a href="/register" >Create Account</a>
</form>
</div>
urls.py 看起來像這樣
from store.settings import MEDIA_ROOT, MEDIA_URL
from . import views
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path('',views.home,name="home"),
path('login/',views.login,name="login"),
path('register/',views.register,name="register"),
path('register/user',views.registeruser,name="registeruser"),
path('login/user',views.handlelogin,name="loginuser"),
path('/user/logout',views.handlelogout,name="logout")
] static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)
views.py 我的句柄登錄功能
def handlelogin(request):
username = request.POST['username']
password = request.POST['password']
user = authenticate(request, username=username, password=password)
if user is not None:
login(request, user)
# Redirect to a success page.
return redirect('')
else:
# Return an 'invalid login' error message
return redirect('login')
def handlelogout(request):
logout(request)
return redirect(' ')
我不明白我做錯了什么有人可以告訴我嗎
uj5u.com熱心網友回復:
根據您的urls.py,您定義了一個login函式,這意味著如果您呼叫login(request, user),它將呼叫視圖函式,而不是django.contrib.auth模塊中的登錄函式。
您可以使用不同的名稱匯入它,例如:
from django.contrib.auth import login as authlogin
# ?
def login(request):
# ?
def handlelogin(request):
username = request.POST['username']
password = request.POST['password']
user = authenticate(request, username=username, password=password)
if user is not None:
authlogin(request, user)
# Redirect to a success page.
return redirect('')
else:
# Return an 'invalid login' error message
return redirect('login')
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/343304.html
