Передача переменных django в качестве параметров в href url

На моей домашней странице я хочу иметь 3 ссылки, которые будут перенаправлять пользователя на страницу ('127.0.0.1:8000/person/<str:name>'), на которой будет отображаться имя, на которое он нажал. Я хотел бы использовать цикл for для создания ссылок для этих имен, поскольку я планирую иметь гораздо больше, чем 3 имени.

Я протестировал два метода (цикл for / ручная запись всех ссылок), но не могу заставить цикл for работать.

Я думал, что эти два метода ниже дадут одинаковый результат.

    <h2>does not work</h2>
    {% for person in people %}
        <a href="{% url 'person' '{{person}}'  %}">{{person}}</a>
    {% endfor %}

    <h2>works</h2>
    <a href="{% url 'person' 'logan' %}">logan</a>
    <a href="{% url 'person' 'paul' %}">paul</a>
    <a href="{% url 'person' 'nicola' %}">nicola</a>

Как выглядят урлы в источнике страницы:

enter image description here

views.py

def home(request):
    return render(request, "APP/home.html", context={"people":['logan', 'paul', 'nicola']})


def person(request, name):
    return render(request, 'APP/person.html', context={"name":name})

urls.py

urlpatterns = [
    path('home/', views.home, name='home'),
    path('person/<str:name>/', views.person, name='person'),
]

Вам не нужно оборачивать переменную person в знаки {{}}, поскольку в теге url вы должны использовать ее напрямую:

{% for person in people %}
    <a href="{% url 'person' person  %}">{{person}}</a>
{% endfor %}

Проверьте пример здесь.

Вернуться на верх