Обратный для ‘quiz_change’ с аргументами ‘(«,)’ не найден. попробовано 1 шаблон (ы): [‘поставщики / викторина / (?P[0-9] )/$’]

#python #django #django-models #django-templates

#python #django #django-модели #django-шаблоны

Вопрос:

urls.py

 from django.urls import include, path

from .views import classroom, suppliers, teachers
urlpatterns = [
    path('', classroom.home, name='home'),

    path('suppliers/', include(([
        path('', suppliers.QuizListView.as_view(), name='quiz_list'),
        path('interests/', suppliers.SupplierTruckView.as_view(), name='supplier_trucks'),
        path('taken/', suppliers.TakenQuizListView.as_view(), name='taken_quiz_list'),
        path('quiz/<int:pk>/', suppliers.take_quiz, name='take_quiz'),
        path('quiz/edit/<int:pk>/', suppliers.edit_quiz, name='edit_quiz'),

        # teachers modules
        path('quiz/add/', suppliers.QuizCreateView.as_view(), name='quiz_add'),
        path('quiz/confirm/<int:pk>/', suppliers.QuizUpdateView.as_view(), name='quiz_change'),

        path('quiz/<int:pk>/delete/', suppliers.QuizDeleteView.as_view(),name='quiz_delete'),

        path('quiz/<int:pk>/question/add/', suppliers.question_add, name='question_add'),
        path('quiz/<int:quiz_pk>/question/<int:question_pk>/', suppliers.question_change, name='question_change'),

        path('myposts', suppliers.QuizListView1.as_view(), name='quiz_change_list'),
        path('quiz/<int:pk>/results/', suppliers.QuizResultsView.as_view(), name='truck_results'),


    ], 'classroom'), namespace='suppliers')),
 

views.py

 class QuizUpdateView(UpdateView):
    model = Activetruck
    fields = ('name', 'subject', 'origin', 'destination','total_trucks','scheduled_date','offered_price',)
    context_object_name = 'quiz'
    template_name = 'classroom/suppliers/quiz_change_form.html'

    def get_context_data(self, **kwargs):
        kwargs['questions'] = self.get_object().questions1.annotate(answers_count=Count('answers1'))
        return super().get_context_data(**kwargs)

    def get_queryset(self):
        return self.request.user.activetruck.all()

    def get_success_url(self):
        return reverse('suppliers:quiz_change', kwargs={'pk': self.object.pk})
 

когда мое приложение django пытается получить доступ к указанному URL-адресу:

  path('quiz/confirm/<int:pk>/', suppliers.QuizUpdateView.as_view(), name='quiz_change'),
 

он показывает ошибку NoReverseMatch. Я не могу понять, откуда это берется. Должен ли я добавить обратную трассировку тоже?

Это шаблон в QuizUpdateView:

     <nav aria-label="breadcrumb">
    <ol class="breadcrumb">
      <li class="breadcrumb-item"><a href="{% url 'suppliers:quiz_change_list' %}">My Quizzes</a></li>
      <li class="breadcrumb-item"><a href="{% url 'suppliers:quiz_change' activetruck.pk %}">{{ quiz.name }}</a></li>
      <li class="breadcrumb-item active" aria-current="page">Results</li>
    </ol>
  </nav>
  <h2 class="mb-3">{{ quiz.name }} Results</h2>

  <div class="card">
    <div class="card-header">
      <strong>Posted Requests For Quotes</strong>
      <span class="badge badge-pill badge-primary float-right">Least Bid: {{ quiz_score.least_bid|default_if_none:0.0 }}</span>
    </div>
    <table class="table mb-0">
      <thead>
        <tr>
          <th>supplier</th>
          <th>Date</th>
          <th>Bid Amount</th>
        </tr>
      </thead>
      <tbody>
        {% for taken_quiz in taken_quizzes %}
          <tr>
            <td>{{ taken_quiz.supplier.user.username }}</td>
            <td>{{ taken_quiz.date|naturaltime }}</td>
            <td>{{ taken_quiz.least_bid }}</td>
          </tr>
        {% endfor %}
      </tbody>
    </table>
    <div class="card-footer text-muted">
      Total respondents: <strong>{{ total_taken_quizzes }}</strong>
    </div>
  </div>
 

Я полагаю, что ошибка в файле шаблона, поскольку я уже тщательно проверил код

Traceback :

Template error: In template
C:UsersSidDownloadsaggregator-masterdjango_schooltemplatesbase.html,
error at line 0 Reverse for ‘quiz_change’ with arguments ‘(»,)’
not found. 1 pattern(s) tried:
[‘suppliers/quiz/confirm/(?P[0-9] )/$’] 1 : {% load static
%} 2 : 3 : 4 :
5 : 6
: {% block title %}Yantraksh Freight{% endblock %}
7 : 8 :
9 : 10 :

Traceback:

File
«C:UsersSidAppDataLocalProgramsPythonPython37libsite-packagesdjangocorehandlersexception.py»
in inner
35. response = get_response(request)

File
«C:UsersSidAppDataLocalProgramsPythonPython37libsite-packagesdjangocorehandlersbase.py»
in _get_response
158. response = self.process_exception_by_middleware(e, request)

File
«C:UsersSidAppDataLocalProgramsPythonPython37libsite-packagesdjangocorehandlersbase.py»
in _get_response
156. response = response.render()

File
«C:UsersSidAppDataLocalProgramsPythonPython37libsite-packagesdjangotemplateresponse.py»
in render
106. self.content = self.rendered_content

File
«C:UsersSidAppDataLocalProgramsPythonPython37libsite-packagesdjangotemplateresponse.py»
in rendered_content
83. content = template.render(context, self._request)

File
«C:UsersSidAppDataLocalProgramsPythonPython37libsite-packagesdjangotemplatebackendsdjango.py»
in render
61. return self.template.render(context)

File
«C:UsersSidAppDataLocalProgramsPythonPython37libsite-packagesdjangotemplatebase.py»
in render
175. return self._render(context)

File
«C:UsersSidAppDataLocalProgramsPythonPython37libsite-packagesdjangotemplatebase.py»
in _render
167. return self.nodelist.render(context)

File
«C:UsersSidAppDataLocalProgramsPythonPython37libsite-packagesdjangotemplatebase.py»
in render
943. bit = node.render_annotated(context)

File
«C:UsersSidAppDataLocalProgramsPythonPython37libsite-packagesdjangotemplatebase.py»
in render_annotated
910. return self.render(context)

File
«C:UsersSidAppDataLocalProgramsPythonPython37libsite-packagesdjangotemplateloader_tags.py»
in render
155. return compiled_parent._render(context)

Файл «C:UsersSidAppDataLocalProgramsPythonPython37libsite-packagesdjangotemplatebase.py » в _render 167. return self.nodelist.render(контекст)

Файл «C:UsersSidAppDataLocalProgramsPythonPython37libsite-packagesdjangotemplatebase.py » в рендеринге 943. bit = node.render_annotated(контекст)

Файл «C:UsersSidAppDataLocalProgramsPythonPython37libsite-packagesdjangotemplatebase.py » в render_annotated 910. return self.render(контекст)

Файл «C:UsersSidAppDataLocalProgramsPythonPython37libsite-packagesdjangotemplateloader_tags.py » в рендеринге 67. result = block.nodelist.render(контекст)

Файл «C:UsersSidAppDataLocalProgramsPythonPython37libsite-packagesdjangotemplatebase.py » в рендеринге 943. bit = node.render_annotated(контекст)

Файл «C:UsersSidAppDataLocalProgramsPythonPython37libsite-packagesdjangotemplatebase.py » в render_annotated 910. return self.render(контекст)

Файл «C:UsersSidAppDataLocalProgramsPythonPython37libsite-packagesdjangotemplatedefaulttags.py » в рендеринге 447. url = reverse(view_name, аргументы = аргументы, kwargs= kwargs, current_app=current_app)

Файл «C:UsersSidAppDataLocalProgramsPythonPython37libsite-packagesdjangourlsbase.py » в обратном порядке 88. верните iri_to_uri(распознаватель._reverse_with_prefix(представление, префикс, * аргументы, ** kwargs))

Файл «C:UsersSidAppDataLocalProgramsPythonPython37libsite-packagesdjangourlsresolvers.py » в _reverse_with_prefix 632. поднять значение NoReverseMatch(msg)

Тип исключения: нет соответствия в /suppliers/quiz/1/ results/ Значение исключения: Обратное для ‘quiz_change’ с аргументами ‘(«,)’ не найдено. попробовано 1 шаблон (ы): [‘поставщики / проверка / подтверждение /(?P[0-9] )/ $’]

Комментарии:

1. Пожалуйста, покажите шаблон для представления, которое выдает ошибку.

2. обновите вопрос, пожалуйста, проверьте сейчас

3. Этот шаблон не ссылается на URL-адрес quiz_change. Пожалуйста, покажите полную обратную трассировку, чтобы мы могли видеть, откуда на самом деле исходит ошибка.

4. Не могли бы вы выполнить поиск в своих шаблонах и найти тот, который на самом деле выполняется {% url 'quiz_change' ... %} . До сих пор вы не опубликовали его, поэтому мы не можем вам помочь.

5. @DanielRoseman Это нормально? Пожалуйста, проверьте сейчас

Ответ №1:

У вас ничего не вызывается activetruck в этом представлении. Ваше имя объекта контекста quiz , которое вы уже используете в той же строке; вам нужно быть последовательным.

 <li class="breadcrumb-item"><a href="{% url 'suppliers:quiz_change' quiz.pk %}">{{ quiz.name }}</a></li>
 

Комментарии:

1. Не могли бы вы уточнить?

Ответ №2:

 <li class="breadcrumb-item"><a href="{% url 'suppliers:quiz_change' quiz.id %}">{{ quiz.name }}</a></li>
 

Просто измените quiz.pk на quiz.id .