Можно использовать context processor или template tag.
Я использую контекстный процессор:
settings.py
TEMPLATES = [
...
'context_processors': [
...
'classifieds.context_processors.search_form',
],
]
classifieds/context_processors.py
from .forms import SearchForm
def search_form(request):
return {
'search_form': SearchForm,
}
classifieds/forms.py
class SearchForm(forms.ModelForm):
...
templates/base.html
{{ search_form }}
Минус контекстных процессоров в том, что они глобальные и их нужно вручную указывать в settings.py. С другой стороны, если он не вызывается в шаблоне, то оверхеда на него нет.