Функция Django views.py не вызывается
Я хочу, чтобы функция login_user() вызывалась, когда пользователь нажимает кнопку Log In. Но функция никогда не вызывается. Мне кажется, что я правильно настроил все URLConfs. Можете ли вы заметить мою ошибку?
views.py
from django.shortcuts import render, redirect
from django.contrib.auth import authenticate, login, logout
from django.contrib import messages
# Create your views here.
def login_user(request):
if request.method == "POST": # if user goes to webpage and fills out form, do something
email = request.POST['email']
password = request.POST['password']
user = authenticate(request, email=email, password=password)
if user is not None:
login(request, user)
return redirect('home') # Redirect to a success page.
else:
messages.success(request, "There was an Error Logging In, please try again.")
return redirect('login')
else:
return render(request, 'registration/login.html', {})
urls.py (основной конфиг)
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('admin/', admin.site.urls),
path('accounts/', include('loginForm.urls')),
path('accounts/', include('django.contrib.auth.urls')),
]
urls.py
from django.urls import path
from . import views
urlpatterns = [
path('login', views.login_user, name='login'),
]
login.html
<h2>Log In</h2>
<form method="POST">
{% csrf_token %}
<div class="mb-3">
<label for="email" class="form-label">Email address</label>
<input type="email" class="form-control" name="email" aria-describedby="emailHelp">
</div>
<div class="mb-3">
<label for="exampleInputPassword1" class="form-label">Password</label>
<input type="password" class="form-control" name="password">
</div>
<input type="submit" value="Log In" class="btn btn-secondary">
</form>
Примечание: Даже если я печатаю что-то в первой строке login_user(), я вижу, что функция так и не вызывается.
с моей стороны установка работает нормально.
в моем случае вместо электронной почты используется имя пользователя.
===== views.py =====
def login_user(request):
if request.method == "POST": # if user goes to webpage and fills out form, do something
uname = request.POST['uname']
password = request.POST['password']
user = authenticate(request, username=uname, password=password)
if user is not None:
login(request, user)
return redirect('home') # Redirect to a success page.
else:
messages.success(request, "There was an Error Logging In, please try again.")
return redirect('login')
else:
return render(request, 'index.html', {})
==== projects/urls.py ====
from django.contrib import admin
from django.urls import path,include
urlpatterns = [
path("", include("myapp.urls")),
path('admin/', admin.site.urls),
]
==== myapp/urls.py =====
from django.urls import path
from .views import *
urlpatterns = [
path('', login_user,name='home'),
path('login', login_user, name='login'),
]
===== index.html =====
<div class="container my-5">
<div class="row">
<div class="col-5">
<h2>Log In {{request.user}}</h2>
<form method="POST">
{% csrf_token %}
<div class="mb-3">
<label for="email" class="form-label">Email address</label>
<input type="text" class="form-control" name="uname" aria-describedby="emailHelp">
</div>
<div class="mb-3">
<label for="exampleInputPassword1" class="form-label">Password</label>
<input type="password" class="form-control" name="password">
</div>
<input type="submit" value="Log In" class="btn btn-secondary">
</form>
</div>
</div>
======= Выход =======