NoReverseMatch at / .Reverse for 'login' not found. 'login' не является действительной функцией представления или именем шаблона [дубликат].
В настоящее время я создаю сайт с помощью Django и у меня возникли некоторые проблемы, может ли кто-нибудь помочь мне с этим. Вот мой файл urls.py:
from django.urls import path, include
from . import views
import sys
app_name = "myapp"
urlpatterns = [
path('', views.index, name='index'),
path('register', views.register, name='register'),
path('login', views.login, name='login'),
path('logout', views.logout, name='logout'),
path('wordsearch', views.wordsearch, name='wordsearch'),
path('generate', views.generate, name="generate")
]
и мой views.py:
from django.shortcuts import render, redirect # redirect: chuyen huong user toi page khac
from django.contrib.auth.models import User, auth
from django.contrib import messages
from django.http import HttpResponse
from .models import Feature
from myproject.main import *
from django.contrib.auth.forms import UserCreationForm, AuthenticationForm
# Create your views here.
# gửi request tới thư mục templates để tìm file index.html
def index(request):
# dictionary
return render(request, 'login.html')
# log in and sign up function
def register(request):
# check if the page is rendered with a post method
if request.method == 'POST':
form = UserCreationForm(request.POST)
if form.is_valid():
form.save()
# log the user in
return redirect('login')
else:
form = UserCreationForm()
return render(request, 'register.html', {'form': form})
def login(request):
if request.method == "POST":
form = AuthenticationForm(data = request.POST)
if form.is_valid():
return redirect('wordsearch')
else:
form = AuthenticationForm()
return render(request, 'login.html', {'form': form})
# log out
def logout(request):
auth.logout(request) # log all user out of platform
return redirect('/')
def wordsearch(request):
return render(request, 'wordsearch.html')
my login.html:
<h1> Login Now </h1>
{% for message in messages %}
<h3>{{message}}</h3>
{% endfor %}
<form action="{% url 'login' %}" method="POST">
{% csrf_token %}
{{ form }}
<input type="submit" value="Login">
</form>
Traceback:
my main urls.py:
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('myapp.urls'))
]
Я запутался в ошибке. Она говорит, что login не является действительной функцией представления, хотя я определил функцию login в моем views.py. Пожалуйста, помогите мне с этой проблемой, большое спасибо!