Показать форму в моей базе шаблонов, используя Django - PullRequest
4 голосов
/ 29 мая 2011

В моем базовом шаблоне я хочу включить форму поиска.

Я уже создал его, но мне интересно, есть ли лучший вариант, чем передать form всем моим шаблонам, расширяющим базу?

Ответы [ 3 ]

12 голосов
/ 29 мая 2011

Да, для этого полезны процессоры контекста шаблона.Они позволяют передавать переменные во все ваши шаблоны без указания.

settings.py

TEMPLATE_CONTEXT_PROCESSORS = (
    'django.contrib.auth.context_processors.auth',
    'django.core.context_processors.debug',

    ...

    'some_app.context_processors.search_form',
)

context_processors.py (Вы помещаете это в одно из своих приложений или в основной каталог, если хотите)

from my_forms import MySearchForm

def search_form(request):
return {
     'search_form' : MySearchForm()
}

Теперь вы можете использовать {{search_form }} во всех ваших шаблонах

1 голос
/ 29 мая 2011

Вы можете превратить его в фильтр, который возвращает форму, предполагая, что она статическая.Тогда это будет выглядеть примерно так:

<body>
...
{% import_form_template %}
...
</body>

или что-то в этом роде.Вы также можете сделать так, чтобы он принимал аргументы, если вам нужно, чтобы он был немного более динамичным:

{% import_form_template arg1 arg2 arg3 %}

https://docs.djangoproject.com/en/dev/howto/custom-template-tags/#writing-custom-template-tags

0 голосов
/ 29 мая 2011

Почему бы не использовать пользовательский контекстный процессор ?

...