Как использовать переменную 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 %}"
    
Вернуться на верх