Передача переменных 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>
Как выглядят урлы в источнике страницы:
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 %}
Проверьте пример здесь.