Django开发在线测验网站时遭遇NoReverseMatch错误求助
Django NoReverseMatch 问题解决记录
我正在用Bootstrap和Django开发在线测验网站,需要实现管理员设置OTP作为所有用户密码的功能(开发阶段暂用常量值)。制作表单后出现如下错误:
NoReverseMatch at /class10.html/testlanding.html/
Reverse for 'validating_user' not found. 'validating_user' is not a valid view function or pattern name
以下是相关文件代码:
urls.py
from django.urls import path from . import views from django.contrib.staticfiles.urls import staticfiles_urlpatterns urlpatterns =[ path("", views.homepage, name = "home page"), path ("class10.html/" , views.class10 , name = "Class 10th"), path ("class12.html/", views.class12, name ="class 12"), path ("class10.html/testlanding.html/", views.validating_users, name ="pre test info"), path ("class12.html/testlanding.html/", views.validating_users, name ="pre test info"), path ("class10.html/testlanding.html/testinstruction.html/", views.test_instruction, name ="pre test info"), path ("class12.html/testlanding.html/testinstruction.html/", views.test_instruction, name ="pre test info"), ]
views.py
from django.shortcuts import render, redirect from django.http import HttpResponse , HttpResponseRedirect from .forms import login_form # Create your views here. def homepage(response): return render (response,"main/index.html",{}) def class10 (response): return render (response, "main/class10.html", {}) def class12 (response): return render (response, "main/class12.html", {}) def validating_users (response): if response.method == "POST": form = login_form(response.POST) if form.is_valid(): Name = form.cleaned_data['Name'] passwd = int(form.cleaned_data ['Password']) if passwd== 1234 : return HttpResponseRedirect ( "main/testinstruction.html") else : form = login_form() return render (response , "main/testlanding.html", {} ) #return render (response , "main/testlanding.html",{}) def test_instruction (response): return render (response , "main/testinstruction.html", {})
forms.py
from django import forms class login_form (forms.Form): Name = forms.CharField( max_length= 250) Passwd= forms.IntegerField()
testlanding.html
{% load static %} <!--the normal html head and other tags --> <body> <!--navbar--> <!-- Login from --> <div class="container marketing"> <form method="POST" action="{% url 'validating_user' %}"> {% csrf_token %} <h1 class=" h3 mb-3 fw-normal">Please sign in</h1> <div class="form-floating"> <input type="text" class="form-control" name="name" placeholder="Name"> </div> <div class="form-floating"> <input type="password" class="form-control" name="passwd" placeholder="Password"> </div> <button class="btn btn-primary w-100 py-2" type="submit" ">Sign in</button> </form> </div> <script src=" https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous"></script> </body> </html>
问题解决
已成功解决该问题,核心原因是模板中{% url %}标签里使用了视图方法名validating_user,但Django要求该标签内必须填写URL配置中path的name属性值。
参考Django官方文档中URL反向解析及URL配置相关章节。
内容的提问来源于stack exchange,提问作者TheLostChild
相关产品推荐
相关产品推荐

