TypeError в /login/user login() принимает 1 позиционный аргумент, но было задано 2
я пытаюсь войти в систему, используя django.contrib.auth он выдает мне ошибку
когда бы я не пытался войти в систему, это дает мне ошибку ниже
TypeError at /login/user
login() takes 1 positional argument but 2 were given
вот мой шаблон входа и url отлично работает из login/user
<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 class="mb-3 form-floating">
<input type="password" class="form-control" id="InputPassword" name="password" placeholder="Enter Password">
<label for="InputPassword" class="form-label">Password</label>
</div>
<div class="mb-3 form-check">
<input type="checkbox" class="form-check-input" id="exampleCheck1">
<label class="form-check-label" for="exampleCheck1">Remember me</label>
</div>
<button type="submit" class="btn btn-primary">Login</button><a href="/register" class="streched-link p-3">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 my handle login function
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(' ')
Я не понимаю, что я делаю неправильно кто-нибудь может мне сказать, пожалуйста
Исходя из вашего urls.py, вы определили функцию login, это означает, что если вы вызовете login(request, user), она вызовет функцию view, а не функцию login из модуля 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')