Как использовать переменную django в href тега <a>?
Я хочу создать list
записей, в которых каждая запись связана со своей страницей следующим образом: wiki/entry-title
. Я использую цикл for
для добавления <li>
в HTML. вот код:
<ul>
{% for entry in entries %}
<li><a href="">{{ entry }}</a></li>
{% endfor %}
</ul>
urlpattern:
path('wiki/<str:title>', views.entry, name='entry')
Что нужно ввести в href
, чтобы связать <li>
с wiki/entry
?
Есть наглядный пример в django docs
<ul>
{% for yearvar in year_list %}
<li><a href="{% url 'news-year-archive' yearvar %}">{{ yearvar }} Archive</a></li>
{% endfor %}
</ul>
В django парсер шаблонов всегда сначала обрабатывает код django, а затем html/javascript. Поэтому вы можете вставить переменную django в тег якоря так же, как и в любое другое место шаблона, и парсер заменит ее перед тем, как попытается отобразить html. Если это django url, вы можете использовать формат {% %}
, как указано в предыдущем ответе, а если это url, который, возможно, хранится в объекте, вы можете просто использовать {{ }}
(как {{ entry.wiki_url }}
). Вы также можете использовать текст для части url и переменную для части. Так, если у вас есть вики-сайт, базовый url которого, например, https://mywiki.com
, вы можете написать href следующим образом:
<ul>
{% for entry in entries %}
<a href="https://mywiki.com/{{entry.title}}"><li>{{ entry.title }}</li></a>
{% endfor %}
</ul>
Вы можете задать свое значение в url как
<ul>
{% for entry in entries %}
<a href="/wiki/{{entry.value}}"><li>{{ entry }}</li></a>
{% endfor %}
</ul>
Лучше использовать {% url %} [Django-doc] шаблонные теги как
<ul>
{% for entry in entries %}
<a href="{% url 'your-url-name' entry.value %}"><li>{{ entry }}</li></a>
{% endfor %}
</ul>
ПРИМЕЧАНИЕ : измените value
соответственно своему значению. Например, {{entry.value}}
или {{entry.title}}
или {{entry.id}}
Я обнаружил, что единственным решением, которое работало для меня, был этот формат
<a href="{% url 'url_path_name' x %}"> {{ x }} </a>
.x
: это переменная, которую мы хотим внедрить внутри атрибута href'url_path_name'
: это имя url, которое мы задали в urls.py, см.
path("wiki/<str:name>" , views.entry, name="url_path_name")
Таким образом, определенный url должен выглядеть следующим образом:
wiki/ ?
href="{% url 'url_path_name' x %}"