即使在正确的网址和视图之后也会出现 NoReverseMatch 错误

问题描述 投票:0回答:1

即使在urls.py中创建路径并在views.py中创建函数后仍收到NoReversedMatch的错误消息 当我手动输入 url 时,它可以正常工作,因此路径没有错误,请有人帮助我

NoReverseMatch at /mcq_web/
Reverse for 'quizes' not found. 'quizes' is not a valid view function or pattern name.

出现错误的html是

href = "{% url 'quizes' quiz_type.id %}"

这是我的 urls.py

from django.contrib import admin
from django.urls import path
from . import views

urlpatterns = [
    path('', views.show_quiz, name="quiz_show"),
    path('add/',views.add_user, name ="new user"),
    path('show_quiz/', views.show_quiz, name="quiz_types"),
    path('<int:quiz_type_id>/quizes/', views.quizes, name="ShortedQuizTypes"),
]

这是我的views.py 部分的错误

def quizes(request,quiz_type_id):
    quiz_type = get_object_or_404( Quiz_types,pk = quiz_type_id)
    quizes = quiz_data.objects.all()
    quiz_types = Quiz_types.objects.all()
    details = {'quiz':quizes,'quiz_type':quiz_type,'quiz_types':quiz_types}
    return render(request,'shorted_show_quiz.html',{'details':details})


以防万一这是我的全部观点。py

from django.shortcuts import render
from django.shortcuts import get_object_or_404
from .models import quiz_data,quiz,quiz_history,Quiz_types,options,user
from .forms import user_form 
# Create your views here.

# function to show quiz by type
def quizes(request,quiz_type_id):
    quiz_type = get_object_or_404( Quiz_types,pk = quiz_type_id)
    quizes = quiz_data.objects.all()
    quiz_types = Quiz_types.objects.all()
    details = {'quiz':quizes,'quiz_type':quiz_type,'quiz_types':quiz_types}
    return render(request,'shorted_show_quiz.html',{'details':details})


# function to add new users
def add_user(request):
    if request.method == 'POST':
        form = user_form(request.POST)
        if form.is_valid:
            form.save()


# function to show quiz by type
def show_quiz(request):
    quizes = quiz_data.objects.all()
    quiz_types = Quiz_types.objects.all()
    details = {'quiz':quizes,'quiz_types':quiz_types}
    return render(request,'show_quiz.html',{'details':details})

我尝试清除缓存数据(在清除缓存之前我已取消应用所有迁移)通过手动输入网址重新启动服务器多次,其工作但不在模板中它不断抛出错误我应该做什么我被卡住了

这是整个回溯

Environment:


Request Method: GET
Request URL: http://127.0.0.1:8000/mcq_web/

Django Version: 5.0.6
Python Version: 3.11.0
Installed Applications:
['django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'mcq_web']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware']


Template error:
In template D:\gitrepo\user_login\mcq_web\templates\show_quiz.html, error at line 19
   Reverse for 'quizes' not found. 'quizes' is not a valid view function or pattern name.
   9 :       <ul class="nav nav-pills">
   10 :         <li class="nav-item"><a href="#" class="nav-link active" aria-current="page">Home</a></li>
   11 :         <li class="nav-item"><a href="#" class="nav-link">Quizes</a></li>
   12 :         <li class="nav-item"><a href="#" class="nav-link">Leaderboard</a></li>
   13 : 
   14 :       </ul>
   15 :     </header>
   16 :   </div>
   17 :   <div class="d-flex gap-2 justify-content-center py-5">
   18 :     {% for quiz_type in details.quiz_types %}
   19 :     <a class="btn btn-outline-secondary d-flex align-items-center" href = " {% url 'quizes' quiz_type.id %} " >
   20 :       {{quiz_type.type_name}}
   21 :       <svg class="bi ms-1" width="20" height="20"><use xlink:href="#arrow-right-short"></use></svg>
   22 :     </a>
   23 :   </div>
   24 :     {% endfor %}
   25 : {% endblock %}
   26 : 
   27 : 
   28 : {% block content %}
   29 : {% for quiz in details.quiz %}


Traceback (most recent call last):
  File "D:\gitrepo\.venv\Lib\site-packages\django\core\handlers\exception.py", line 55, in inner
    response = get_response(request)
               ^^^^^^^^^^^^^^^^^^^^^
  File "D:\gitrepo\.venv\Lib\site-packages\django\core\handlers\base.py", line 197, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\gitrepo\user_login\mcq_web\views.py", line 29, in show_quiz
    return render(request,'show_quiz.html',{'details':details})
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\gitrepo\.venv\Lib\site-packages\django\shortcuts.py", line 25, in render
    content = loader.render_to_string(template_name, context, request, using=using)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\gitrepo\.venv\Lib\site-packages\django\template\loader.py", line 62, in render_to_string
    return template.render(context, request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\gitrepo\.venv\Lib\site-packages\django\template\backends\django.py", line 61, in render
    return self.template.render(context)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\gitrepo\.venv\Lib\site-packages\django\template\base.py", line 171, in render
    return self._render(context)
           ^^^^^^^^^^^^^^^^^^^^^
  File "D:\gitrepo\.venv\Lib\site-packages\django\template\base.py", line 163, in _render
    return self.nodelist.render(context)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\gitrepo\.venv\Lib\site-packages\django\template\base.py", line 1000, in render
    return SafeString("".join([node.render_annotated(context) for node in self]))
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\gitrepo\.venv\Lib\site-packages\django\template\base.py", line 1000, in <listcomp>
    return SafeString("".join([node.render_annotated(context) for node in self]))
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\gitrepo\.venv\Lib\site-packages\django\template\base.py", line 961, in render_annotated
    return self.render(context)
           ^^^^^^^^^^^^^^^^^^^^
  File "D:\gitrepo\.venv\Lib\site-packages\django\template\loader_tags.py", line 159, in render
    return compiled_parent._render(context)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\gitrepo\.venv\Lib\site-packages\django\template\base.py", line 163, in _render
    return self.nodelist.render(context)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\gitrepo\.venv\Lib\site-packages\django\template\base.py", line 1000, in render
    return SafeString("".join([node.render_annotated(context) for node in self]))
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\gitrepo\.venv\Lib\site-packages\django\template\base.py", line 1000, in <listcomp>
    return SafeString("".join([node.render_annotated(context) for node in self]))
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\gitrepo\.venv\Lib\site-packages\django\template\base.py", line 961, in render_annotated
    return self.render(context)
           ^^^^^^^^^^^^^^^^^^^^
  File "D:\gitrepo\.venv\Lib\site-packages\django\template\loader_tags.py", line 65, in render
    result = block.nodelist.render(context)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\gitrepo\.venv\Lib\site-packages\django\template\base.py", line 1000, in render
    return SafeString("".join([node.render_annotated(context) for node in self]))
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\gitrepo\.venv\Lib\site-packages\django\template\base.py", line 1000, in <listcomp>
    return SafeString("".join([node.render_annotated(context) for node in self]))
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\gitrepo\.venv\Lib\site-packages\django\template\base.py", line 961, in render_annotated
    return self.render(context)
           ^^^^^^^^^^^^^^^^^^^^
  File "D:\gitrepo\.venv\Lib\site-packages\django\template\defaulttags.py", line 242, in render
    nodelist.append(node.render_annotated(context))
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\gitrepo\.venv\Lib\site-packages\django\template\base.py", line 961, in render_annotated
    return self.render(context)
           ^^^^^^^^^^^^^^^^^^^^
  File "D:\gitrepo\.venv\Lib\site-packages\django\template\defaulttags.py", line 479, in render
    url = reverse(view_name, args=args, kwargs=kwargs, current_app=current_app)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\gitrepo\.venv\Lib\site-packages\django\urls\base.py", line 88, in reverse
    return resolver._reverse_with_prefix(view, prefix, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\gitrepo\.venv\Lib\site-packages\django\urls\resolvers.py", line 851, in _reverse_with_prefix
    raise NoReverseMatch(msg)
    ^^^^^^^^^^^^^^^^^^^^^^^^^

Exception Type: NoReverseMatch at /mcq_web/
Exception Value: Reverse for 'quizes' not found. 'quizes' is not a valid view function or pattern name.

django django-views django-templates
1个回答
0
投票

视图的名称是

ShortedQuizTypes
,而不是
quizes
,所以:

<a href="{% url 'ShortedQuizTypes' quiz_type.id %}"></a>
© www.soinside.com 2019 - 2024. All rights reserved.