Джанго:Распечатать URL-адрес просмотра без жесткого кодирования URL-адреса

StackOverflow https://stackoverflow.com/questions/47207

  •  09-06-2019
  •  | 
  •  

Вопрос

Могу ли я распечатать URL? /admin/manage/products/add определенного представления в шаблоне?

Вот правило, для которого я хочу создать ссылку

(r'^manage/products/add/$', create_object, {'model': Product, 'post_save_redirect': ''}),

Я хотел бы иметь /manage/products/add в шаблоне без его жесткого кодирования.Как я могу это сделать?

Редактировать: Я не использую администратора по умолчанию (ну, я использую, но он находится по другому URL), это мой собственный

Это было полезно?

Решение

Вы можете использовать get_absolute_url, но это будет работать только для конкретного объекта.Поскольку ваш объект еще не создан, в этом случае он не будет работать.

Вы хотите использовать именованные шаблоны URL.Вот краткое введение:

Измените строку в вашем urls.py на:

(r'^manage/products/add/$', create_object, {'model': Product, 'post_save_redirect': ''}, "create-product"),

Затем в своем шаблоне вы используете это для отображения URL-адреса:

{% url create-product %}

Если вы используете Django 1.5 или выше, вам нужно это:

{% url 'create-product' %}

С именованными шаблонами URL-адресов можно делать и более мощные вещи, они очень удобны.Обратите внимание, что они есть только в версии для разработки (а также 1.0).

Другие советы

Если вы используете именованные шаблоны URL вы можете сделать следующее в своем шаблоне

{% url create_object %}

Предпочтительный способ создания URL-адреса — добавление get_absolute_url метод для ваших классов моделей.Вы можете жестко запрограммировать путь, чтобы хотя бы приблизиться к философии KISS.

Вы можете пойти дальше, воспользовавшись permalink декоратор, который определяет путь на основе конфигурации URL-адресов.

Вы можете прочитать больше в документации django. здесь.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top