Подскажите пожалуйста, что делает код `{% url ... %}`
Подскажите. пожалуйста, что делает строка <а href="{% url 'by_rubric' rubric.pk %)"> в коде? Какую функцию или ссылку нужно передать в url?
<div>
<а href="{% url 'index' %)">Главная</а>
{% for rubric in rubrics %)
<а href="{% url 'by_rubric' rubric.pk %)">
{{ rubric.name ))</а>
{% endfor %)
</div>
<form method="post">
{% csrf_token %)
{{ form.as_p ))
<input type="submit" vаluе="Добавить">
</form>
Ответы (1 шт):
<а href="{% url 'by_rubric' rubric.pk %}"> - это ссылка в цикле. Эта ссылка будет повторяться len(rubrics) раз. В имени ссылки выводится имя рубрики. Сама ссылка, как я понимаю, ведёт к детальному отображению рубрики. Ну т.е в ссылке указано имя адреса куда будет происходить переадресация - это адрес с именем by_rubric и еще далее там указан аргумент rubric.pk. Соответственно у вас еще есть url-параметр в пути с именем by_rubric и, так как в пути есть url-параметр, то его нужно так же передавать, как аргумент в ссылку.
by_rubric указывается в параметре name в urlpatterns.py для путей, где это необходимо. Это применяется для того, чтобы не хардкодить ссылки в коде.
Django будет строить ссылку примерно так:
Допустим rubrics содержит 5 записей(скажем записи title1-title5) и если пройтись по этому списку в цикле, то будет ссылка на каждую запись(5 ссылок будет):
title1 (pk=1)
title2 (pk=2)
title3 (pk=3)
title4 (pk=4)
title5 (pk=5)
В названии ссылки выводятся имя рубрик, а в скобках, как я говорил выше - аргументы. На каждой итерации цикла подставляется pk каждой рубрики и url-параметр в пути с именем by_rubric получает pk каждой рубрики в цикле. Слишком развернуто я ответил :)