#django #django-views
#django #django-представления
Вопрос:
Я хотел бы использовать аргументы URL в представлениях (не шаблоны, я знаю, как это сделать).
Итак, возможно ли использовать их как:
def item_link(self, item):
return mainpage_url_name "%s/%i" % (item.slug, item.cid)
mainpage_url_name — конечно, определяется в шаблонах url (как переменная name)
Я полный новичок в Django…
Спасибо
Комментарии:
1. Я настоятельно рекомендую вам следовать руководству по Django . Это очень хорошо написано и прямо по существу.
2. Я делал это, но мне не удалось найти свой ответ…
3. Что именно вы пытаетесь сделать? Опубликованная вами функция не является функцией просмотра, потому что она не принимает запрос в качестве своего первого параметра.
4. Функция в сообщении извлекается из синдикации канала. Я пытаюсь добиться того, чтобы все «фиксированные» пути были в одном месте… urls.py и что каждый отдельный «фиксированный» путь будет возвращен оттуда… Если это вообще возможно, я знаю, что это для шаблонов…
Ответ №1:
Сначала вы должны использовать имена для своих шаблонов URL, как описано здесь.
Затем вы можете использовать reverse()
для использования этих имен в своих представлениях или методах.
Судя по вашим комментариям, вы используете платформу синдикации.
Поэтому вы должны убедиться, что вы определяете get_absolute_url()
для себя модели, в идеале используя декоратор постоянных ссылок (для чистого изменения ваших URL-адресов).
Глядя на пример из документов Django, этого должно быть достаточно.
Чтобы указать содержимое
<link>
, у вас есть два варианта. Для каждого элемента в items() Django сначала пытается вызвать метод item_link() в классе Feed. Аналогично заголовку и описанию, ему передается единственный параметр item. Если этот метод не существует, Django пытается выполнить метод get_absolute_url() для этого объекта.
Комментарии:
1. Да, я пробовал это, но у меня не получилось заставить это работать. Как я уже сказал, я просмотрел документацию, а затем опубликовал вопрос… не наоборот…
2. «Я пробовал это, но у меня не получилось заставить это работать» … как вы ожидаете, что кто-нибудь поможет вам, если это вся информация, которую вы предоставляете? Как насчет некоторых сообщений об ошибках и некоторой дополнительной контекстной информации?
3. Я всегда могу присвоить вашему классу контента метод get_absolute_url() или определить метод item_link() в вашем классе Feed.def get_absolute_url(self): return (‘frontpage-news-show’, (), { ‘news_slug’: self.slug, ‘news_id’: self.cid })