Как импортировать зарегистрированные фильтры из одного Django вида в другой? - PullRequest
2 голосов
/ 13 января 2020

У меня есть проект Django с несколькими модулями. Я хочу повторно использовать фильтры, которые я создал.

Например, код: main / views.py

from django.template.defaulttags import register

@register.filter
  def get_item(dictionary, key):
  return dictionary.get(key)

@register.filter
  def get_range(value):
  return range(value)

(Как) Можно ли импортировать и использовать их фильтры (без вырезания и вставки) в вторичные / views.py ?

1 Ответ

2 голосов
/ 13 января 2020

Обычно вы не определяете теги в views.py, но в каталоге с именем templatetags. Действительно, дерево проекта должно выглядеть следующим образом:

app/
    <b>templatetags/</b>
        <b>__init__.py</b>
        <b>tagname.py</b>
    __init__.py
    models.py
    urls.py
    views.py

, тогда вы определяете теги и фильтры шаблонов в app/templatetags/tagname.py:

# app/templatetags/tagname.py

from django import template

<b>register = template.Library()</b>

@register.filter
def get_item(dictionary, key):
    return dictionary.get(key)

@register.filter
def get_range(value):
    return range(value)

, а затем вы можете загружать теги и фильтры шаблонов с {% load &hellip; %}:

{% load <b>tagname</b> %}

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