Вызывание функции Python в шаблоне Django

В шаблоне django я пытаюсь вызвать функцию разделения на одной из переменных шаблона и затем получить последний элемент, таким образом, я сделал что-то вроде этого:

{{ newsletter.NewsletterPath.split('/').-1 }}

К сожалению, этому не нравится разделение. Некоторые могли бы предложить, чтобы я сделал разделение в представлении, но я не уверен, как сделать это, потому что я должен сделать это для всех записей. Было бы намного легче, если я мог бы сделать это в шаблоне. Существует ли способ сделать это?

7
задан The.Anti.9 22 January 2010 в 08:09
поделиться

4 ответа

Что вы подразумеваете под «это не нравится разделение»? Как это проявляется его неприязнью?

Если я правильно помню, вы не можете передавать какие-либо произвольные аргументы методам, которые называются шаблоном Django и идентификаторы, которые могут быть использованы в шаблонах, могут состоять только из AZ, AZ, 0-9, подчеркивания и DOTS (где точки означают поиск: словарь-> Атрибут-> Метод-> Список-индекс).

Существует как минимум четыре способа достижения того, что вы хотите:

  • , сделайте соответствующим образом подготовленные данные, доступные в качестве атрибута вашей модели (или что то есть), предварительно обработав его
  • , сделайте данные доступными как Способ вашей модели и убедитесь, что метод не требует необходимых аргументов, кроме того Self
  • Заполните экземпляры модели в виду

      для рассылки в рассылки в рассылку:
      SetaTtr (рассылка, 'basepath',
      Newsletter.newsletterPath.split ('/') [- 1])
     

    (или что-то вдоль этих строк)

  • внедрить метку пользовательского фильтра, которая будет обрабатывать разделение (проще, чем вы могли бы подумать)
6
ответ дан 6 December 2019 в 10:50
поделиться

Из книги Django :

Обратите внимание, что вы не включаете скобки в вызовах метода. Кроме того, невозможно пройти аргументы методам; Вы можете назвать только методы, которые не требуют аргументов.

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

7
ответ дан 6 December 2019 в 10:50
поделиться

Шаблоны намеренно не могут делать такие вещи. Цель состоит в том, чтобы предотвратить вам возможность вносить вашу деловую логику в шаблоны, которые предназначены для решения только с макетом.

Таким образом, возможный способ сделать это - определить функцию рассылки NewsletTaTherPathlastelement (Self) в вашей модели информационной рассылки, и вызовите это из шаблона.

5
ответ дан 6 December 2019 в 10:50
поделиться

Да, как другие сказали, вы не должны делать это в шаблонах.

Но если вы хотите, то вам нужно определить фильтр и загрузить его в шаблон и использовать его.

0
ответ дан 6 December 2019 в 10:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: