Использовать аргументы URL в представлениях, возможно ли это?

#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 })