I'm currently building a website using Django and have some issues, can someone please help me with this. Here is my urls.py file:
from django.urls import path, includefrom . import viewsimport sysapp_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")]
and my views.py:
from django.shortcuts import render, redirect # redirect: chuyen huong user toi page khacfrom django.contrib.auth.models import User, authfrom django.contrib import messagesfrom django.http import HttpResponsefrom .models import Featurefrom 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.htmldef index(request): # dictionary return render(request, 'login.html')# log in and sign up functiondef 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 outdef 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:
Traceback (most recent call last): File "D:\VSC\word-search-AI\env\Lib\site-packages\django\core\handlers\exception.py", line 56, in inner response = get_response(request) ^^^^^^^^^^^^^^^^^^^^^ File "D:\VSC\word-search-AI\env\Lib\site-packages\django\core\handlers\base.py", line 197, in _get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\VSC\word-search-AI\env\myproject\myapp\views.py", line 13, in index return render(request, 'login.html') ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\VSC\word-search-AI\env\Lib\site-packages\django\shortcuts.py", line 24, in render content = loader.render_to_string(template_name, context, request, using=using) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\VSC\word-search-AI\env\Lib\site-packages\django\template\loader.py", line 62, in render_to_string return template.render(context, request) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\VSC\word-search-AI\env\Lib\site-packages\django\template\backends\django.py", line 61, in render return self.template.render(context) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\VSC\word-search-AI\env\Lib\site-packages\django\template\base.py", line 175, in render return self._render(context) ^^^^^^^^^^^^^^^^^^^^^ File "D:\VSC\word-search-AI\env\Lib\site-packages\django\template\base.py", line 167, in _render return self.nodelist.render(context) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\VSC\word-search-AI\env\Lib\site-packages\django\template\base.py", line 1005, in render return SafeString("".join([node.render_annotated(context) for node in self])) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\VSC\word-search-AI\env\Lib\site-packages\django\template\base.py", line 1005, in <listcomp> return SafeString("".join([node.render_annotated(context) for node in self])) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\VSC\word-search-AI\env\Lib\site-packages\django\template\base.py", line 966, in render_annotated return self.render(context) ^^^^^^^^^^^^^^^^^^^^ File "D:\VSC\word-search-AI\env\Lib\site-packages\django\template\defaulttags.py", line 471, in render url = reverse(view_name, args=args, kwargs=kwargs, current_app=current_app) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\VSC\word-search-AI\env\Lib\site-packages\django\urls\base.py", line 88, in reverse return resolver._reverse_with_prefix(view, prefix, *args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\VSC\word-search-AI\env\Lib\site-packages\django\urls\resolvers.py", line 828, in _reverse_with_prefix raise NoReverseMatch(msg)django.urls.exceptions.NoReverseMatch: Reverse for 'login' not found. 'login' is not a valid view function or pattern name.
I'm confused with the error. It says login is not a valid view function though I have defined login function in my views.py. Please help me with this problem, thank you so much!