Джанго:Распечатать URL-адрес просмотра без жесткого кодирования URL-адреса
Вопрос
Могу ли я распечатать 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. здесь.