#python #django #redirect #dynamic #response.redirect
#python #django #перенаправление #динамический #ответ.перенаправление
Вопрос:
Я пытаюсь динамически перенаправлять с одной динамической страницы на другую. Подумайте о том, чтобы перейти на страницу фильма IMDB (динамическую), а затем перейти по ссылке на страницу сценариста / режиссера / актера (динамическую).
Это URL-адреса:
urlpatterns = [
path('', views.index, name="index"),
path('writer/<int:id>', views.writer, name="writer"),
path('title/<int:id>', views.title, name="title"),
path('creator/', views.creator, name="creator"),
]
Это index.html:
{% for pilots in pilot %}
<div>
<p>Title: <a href="title/{{ pilots.id }}">{{ pilots.title }}</a></p>
{% for writers in pilots.creators.all %}
<p>Writer: <a href="writer/{{ writers.id }}">{{ writers.writer }}</a></p>
{% endfor %}
</div>
{% endfor %}
Это title.html (который динамический ahref не работает):
{% for title in titles %}
<p>{{title.title}}</p>
<p>{{title.count}}</p>
<p>{{title.year}}</p>
<p>{{title.description}}</p>
{% for creators in title.creators.all %}
<a href="creator/">{{creators.writer}}</a>
{% endfor %}
{% endfor %}
И это views.py:
def title(request, id):
titles = Pilot.objects.filter(id=id)
context = {
'titles': titles,
}
return render(request, 'title.html', context)
def creator(request):
return redirect(f'writer/{id}')
Ответ №1:
Я думаю, это то, что вам нужно: удалить жесткий код в django
ваш код может быть изменен на
{% for title in titles %}
<p>{{title.title}}</p>
<p>{{title.count}}</p>
<p>{{title.year}}</p>
<p>{{title.description}}</p>
{% for creators in title.creators.all %}
<a href="{% url 'writer' creators.writer.id %}">{{creators.writer}}</a>
{% endfor %}
{% endfor %}
и более того, вы создаете namespace
(при использовании нескольких приложений). подробнее см. В документе. 🙂
Комментарии:
1. Я попробовал то, что вы рекомендовали, но у меня другая ошибка: обратный для ‘name’ с аргументами ‘(«,)’ не найден. попробовано 1 шаблон (ы): [‘name/(?P<id>[0-9] )$’] @ tomy0608
2. проверьте, зарегистрировали ли вы приложение. в нем указано> Обратное для ‘name’ с аргументами ‘(«,)’ не найдено.. попробовано 1 шаблон (ы): [‘name/(?P<id>[0-9] ) $’] возможно, вы зарегистрировали
name/(?P<id>[0-9] )$
в нем приложение.3. Вы правы. Я не хотел делать это более запутанным, но я изменил имя пути с «Writer» на «Name» для большей ясности с моей стороны через urls.py/views.py . Итак, если бы путь по-прежнему назывался «writer», я бы получил ту же ошибку. Мне интересно, имеет ли это какое-то отношение к резервному поиску. Может быть, я это выдумываю
4. @T_hall будьте осторожны с именем разрешения, именем модуля или тем, что вы используете. постарайтесь не перепутать их. лучшей практикой является использование пространства имен . и абсолютный импорт является плюсом.
5. Спасибо за вашу помощь! Еще один вопрос. get_absolute_url работает до тех пор, пока я не попытаюсь использовать его в цикле for в цикле for. Когда я нажимаю на ссылку для страницы с идентификатором автора, она загружает идентификатор заголовка, в основном перезагружая ту же страницу, на которой я нахожусь