Django: печатать URL-адрес просмотра без жесткого кодирования URL-адреса - PullRequest
8 голосов
/ 06 сентября 2008

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

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

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

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

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

Ответы [ 3 ]

15 голосов
/ 06 сентября 2008

Вы можете использовать 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).

2 голосов
/ 06 сентября 2008

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

{% url create_object %}
0 голосов
/ 06 сентября 2008

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...