Почему мой шаблон django не распознает параметры URL, которые я установил в своем views.py досье?

#python #django #django-views #django-urls

Вопрос:

Я создаю приложение для управления событиями с помощью Django. Я создал динамический календарь и пытаюсь добавить ссылку на календарь на следующие месяцы в своей навигации.

urls.py

 from django.urls import path
from . import views

urlpatterns = [
    path('', views.home, name = 'home'),
    path('<int:year>/<str:month>/', views.home),
]

 

В моем views.py файл, в который я добавил такие параметры:

 def home(request, year=datetime.now().year, month=datetime.now().strftime('%B')):
 
 <li class="nav-item">
  <a class="nav-link" href="{% url 'home' '2021' 'November' %}">November</a>
</li>
 

Когда я добавляю два аргумента, я получаю ошибку отрисовки шаблона:

Обратный для «дома» с аргументами «(«2021», «Ноябрь»)» не найден. 1 шаблон(ы) попробовал: [‘$’]

Когда я удаляю два аргумента и оставляю только «дома», ошибка шаблона исчезает, и я не уверен, почему. Любая помощь будет признательна!

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

1. Можете ли вы показать содержимое файла URL-адресов, чтобы мы могли увидеть, как вы сопоставляете URL-адрес с методом?

2. Пожалуйста, убедитесь, что пользователям предоставлена вся соответствующая информация, которая поможет вам ответить на ваш вопрос.

3. Просто добавил свой urls.py файл!

Ответ №1:

Похоже, что ваш URLconf не указывает ваши два аргумента (правильно). Вероятно, это должно выглядеть примерно так:

 from django.urls import path

from . import views

urlpatterns = [
    path('/<int:year>/<str:month>/', views.home, name='home'),
]
 

Ответ №2:

Здесь у вас есть два разных URL-адреса, которые обрабатываются одним и тем же представлением. Первый URL-адрес-это ваша домашняя страница без указанной даты, а второй-ваша страница с указанными годом и месяцем.

Обработайте их как два шаблона URL с разными именами, например:

urls.py

 from django.urls import path
from . import views

urlpatterns = [
    path('', views.home, name='home'),
    path('<int:year>/<str:month>/', views.home, name='byyearmonth'),
]
 

Шаблон:

 <li class="nav-item">
  <a class="nav-link" href="{% url 'byyearmonth' '2021' 'November' %}">November</a>
</li>