You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 10:57:37