@proDream

Как добавить форму на все страницы в Django?

Приветствую.
Хочу добавить форму на все страницы.
Есть base.html в котором только навбар и футер с подключением стилей и прочего. Добавил кнопку и форму туда.
Писать один и тот же код в каждой вью не очень удобно, по это попробовал вынести его отдельно и вызываю при передаче в шаблон, но в таком случае не отрабатывает return http.HttpResponseRedirect(request.path), страница остаётся та же и содержимое формы не сбрасывается.
Вынесенная в функцию форма:
def feedback(request):
    feedback_form = FeedbackForm(request.POST, user=request.user)
    if feedback_form.is_valid():
        feedback_form = feedback_form.save(commit=False)
        feedback_form.save()
        return http.HttpResponseRedirect(request.path)
    else:
        feedback_form = FeedbackForm(user=request.user)
        return feedback_form


Контекст для разных вью:
'feedback_form': feedback(request)

Пробовал как тут, но у меня не заработало. https://qna.habr.com/q/825625
  • Вопрос задан
  • 54 просмотра
Пригласить эксперта
Ответы на вопрос 1
@proDream Автор вопроса
Решил проблему. Достаточно топорно или даже костыльно, но работает.

Внешняя функция формы:
def feedback(request):
    feedback_form = FeedbackForm(request.POST, user=request.user)
    if feedback_form.is_valid():
        feedback_form = feedback_form.save(commit=False)
        feedback_form.save()
        return 'Отправлено'
    else:
        return FeedbackForm(user=request.user)


Пример view:
def index(request):
    # что-то

    feedback_form = feedback(request)
    if feedback_form == 'Отправлено':
        return http.HttpResponseRedirect(request.path)

    context = {
        # ...,
        'feedback_form': feedback_form,
    }

    return render(request,
                  'blog/index.html',
                  context)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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