@nart_kenobi
QA Engineer

Как выводить форму в base.html в Django?

Есть base.html, базовый шаблон для всех страниц, хочу в этот шаблон выводить форму, чтобы форма была доступна со всех страниц, как это правильно можно сделать? Попробовал так, но форма не рендерится:
def add(request):
    form = Form() #ModelForm
    context = {
        'form': form
    }
    return render(request, 'app/base.html', context)
  • Вопрос задан
  • 663 просмотра
Пригласить эксперта
Ответы на вопрос 2
tumbler
@tumbler Куратор тега Django
бекенд-разработчик на python
Два варианта:
Просто сверстайте эту форму в базовом шаблоне, она не будет связана с django-формой, но поля отобразит и даже куда-то самбит сделает.
Добавьте форму в контекст всех шаблонов через контекстный процессор.

settings.TEMPLATES['context_processors'].append('path.to.my.module.where.inject_form')

def inject_form(request): 
    return {form: MyForm()}


{# base.html #}
...
{{form}} и вот это всё
...
Ответ написан
@cegthgtlhj
примерно так
views.py

from django.shortcuts import render
from django.http import HttpRequest
from .forms import *

def startpage(request):

    if request.method == 'POST':
        form = MyForm(request.POST)
        context = {'form':form}

        if form.is_valid():
            context = form.cleaned_data
            '''делаем что то с данными создаем новый контексT'''
	    context = ....
        return render(request, 'mydir/mytemplate.html', context)

    else:
        context = {'form':MyForm()}
        return render(request, 'mydir/another_template.html', context)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы