#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>