«NoReverseMatch» при вводе кнопки, которая ссылается на страницу с параметром в URL

#html #django #django-models #django-templates #django-urls

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

Вопрос:

У меня эта ошибка:

«NoReverseMatch в /home/2 / Reverse для ‘calendar_new’ с аргументами ‘(«,)’ не найден. попробовано 1 шаблон (ы): [‘home/(?P<group_id>d )/calendar/new/$’]«

в кнопке. В ulr у меня есть параметр «group_id», который мне нужно использовать в качестве параметра фильтра. Я не понимаю, что не так, потому что, если я напишу путь вручную в URL, у меня не возникнет никаких проблем, и страница откроется правильно. «group_id» уже является параметром, присутствующим в URL.

В calendar.html:

 <div class="cover-container d-flex w-100 h-100 p-3 mx-auto flex-column">
        <main class="inner cove border" role="main" style="background-color: white;">
            <h1 class="cover-heading mt-3">Lista Calendari di {{ nome }}</h1>
            
            <div class="mt-5">
                <ul class="list-group">
                    {% for calendar in object_list %}
                    <a href="{{ calendar.id }}"><li class="list-group-item list-group-item-action">{{ calendar.name }}</li></a>
                    {% empty %}
                        <li class="list-group-item">Non ci sono calendari disponibili per questo edificio</li>
                    {% endfor %}
                </ul>
            </div>
            
        </main>
    <!-- NUOVO CALENDARIO -->
        <a class="btn btn-primary btn-lg active mt-5 mb-5" href="{% url 'cal:calendar_new'%}">Aggiungi Calendario</a>
</div>
  

В urls.py:

 url(r'^home/(?P<group_id>d )/$', views.CalendarsOfGroupView.as_view(), name='group_view'),
url(r'^home/(?P<group_id>d )/calendar/new/$', views.calendar, name='calendar_new'),
  

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

1. вы должны передать параметр group_id в тег шаблона URL docs.djangoproject.com/en/3.1/topics/http/urls/#examples

2. Спасибо, я прочитал эту документацию, но не смог решить проблему. Теперь я пишу «href=»{% url ‘cal:calendar_new’ calendar.group.id %}»» но это не работает

3. Вы не показали представление, поэтому мы не знаем, как получить доступ group_id к шаблону. Пока удалите {% url %} тег и попробуйте что-то вроде {{ calendar.group.id }} , пока не выясните, как отображать идентификатор группы в шаблоне. Я думаю, {{ view.kwargs.group_id }} должно сработать. Вы могли бы найти {% debug %} тег шаблона или панель инструментов django debug полезными для подобных проблем.

4. calendar.group.id там наверняка недоступен, поскольку календарь является переменной в цикле for, который закрывается до этого тега <a>, поэтому calendar.group.id там не существует, следовательно, та же ошибка

5. Большое вам спасибо за ваши ответы! Я решил это, написав следующее: «href=»{% url ‘cal:calendar_new’ view.kwargs.group_id %}» »

Ответ №1:

Предполагая, что у вас есть группа в контексте

 <a class="btn btn-primary btn-lg active mt-5 mb-5" href="{% url 'cal:calendar_new' group.id %}">Aggiungi Calendario</a>
  

Поскольку для вашего URL требуется сопоставление параметра group_id

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

1. Не работает! Я помещаю » href=»{% url ‘cal:calendar_new’ calendar.group.id %}» » но даже это не работает.