В 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" не решается в нужное время здесь - какой совет?

Спасибо

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

0
Omroth 28 Май 2019 в 12:41

2 ответа

Лучший ответ

< Сильный > 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 не сможет разрешить ваш {{X1 } } .

< Сильные > Решения

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

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>
0
Zoe - account abandoned 29 Май 2019 в 09:51

Вам не нужно помещать другое выражение в выражение шаблона 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>
1
xxbinxx 28 Май 2019 в 10:11