Как вставить переменные результаты в вызовы на языке шаблонов Django - PullRequest
0 голосов
/ 28 мая 2019

В Django я пытаюсь сделать общий вызов «Подтвердить действие», на который я могу легко передать окончательный адрес, но мне трудно вставить переменную в ссылку:

<a href="{% url 'view_do_confirm_action' 'url view_delete_object object.object_name' %}"> Delete this object </a><br>

В случае, если неясно, аргумент view_do_confirm_action - это URL, по которому нужно следовать, если пользователь подтвердит. Окончательный URL-адрес, я хотел бы перейти ссылки на этот шаблон:

path('objects/object/<str:object_name>/delete', views.view_delete_object, name='view_delete_object'),

"url view_delete_object object.object_name" не решается в нужное время здесь - любой совет?

Спасибо

1011 * Сканирование *

Ответы [ 2 ]

1 голос
/ 28 мая 2019

Вам не нужно помещать другое выражение в выражение шаблона django.

Вы передаете URL в качестве параметра другому URL.

Вместо

<a href="{% url 'view_do_confirm_action' 'url view_delete_object {{ object.object_name }}' %}"> Delete this object </a><br>

У

{% url view_delete_object object.object_name as the_url %}
<a href="{% url 'view_do_confirm_action' the_url %}"> Delete this object </a><br>
0 голосов
/ 29 мая 2019

urls.py

path('<str:object_name>/delete', ViewBarDrinkDetail, name='view_delete_object'),
path('confirm/<str:url_text>', ViewBarDrinkUpdate, name='view_do_confirm_action'),

Ваш главный URL view_do_confirm_action принимает url_text , этот url_text, очевидно, будет содержать / с этими динамическими косыми чертами Django не сможет решить ваши view_do_confirm_action.

Решения

Попробуйте изменить ваш шаблон:

path('/confirm/<str:object_name>/delete', ViewBarDrinkDetail, name='view_do_confirm_action'),

Использовать пользовательский тег шаблона

@register.simple_tag
def pass_url_to_reverse_name(name, arg_url_name, arg_url_args):

    arg_resolved_url = reverse(arg_url_name, args=[arg_url_args])
    resolved_url = reverse(name, args=[arg_resolved_url])

    return resolved_ur

В шаблоне Используйте его следующим образом:

<a href="{% pass_url_to_reverse_name 'view_do_confirm_action' 'view_delete_object' request.user.id %}"> Delete this object </a>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...