Добавить форму в django-flatpages - PullRequest
3 голосов
/ 25 декабря 2011

У меня есть страница с контактами и информацией, которая использует плоские страницы. Однако я хочу добавить форму, которая позволяет посетителям подписывать свои электронные письма до списка. Однако, если я отправлю URL-адрес для отображения формы, он не будет иметь контекст плоских страниц. Как лучше всего включить контекст плоских страниц в мое представление формы электронной почты или добавить контекст моей формы на мою плоскую страницу.


Спасибо Tommasa Barbugli за решение. Теперь у меня есть:

from django.contrib.flatpages.models import FlatPage
from django.shortcuts import render, get_object_or_404

from canada.bulkmail.models import *

def email(request):
    contact_flatpage = get_object_or_404(FlatPage, url='/contact/')
    ContactEmailFormSet = modelformset_factory(Contact, formset=ContactEmailForm)
    if request.method == 'POST':
        formset = ContactEmailFormSet(request.POST)
        if formset.is_valid():
            contact = formset.save()
    else:
        formset = ContactEmailFormSet()
    return render(request, 'flatpages/default.html', {
        "formset": formset,
        "flatepage": contact_flatpage,
    })

Ответы [ 2 ]

3 голосов
/ 25 декабря 2011

Возвращает правильный контекст из представления страницы формы.

Это контекст, отправляемый шаблону плоских страниц (где f - экземпляр плоской страницы)

f.title = mark_safe(f.title)
f.content = mark_safe(f.content)

c = RequestContext(request, {
    'flatpage': f,
})

, по вашему мнению, вы можетелегко вернуть (несохраненный) экземпляр плоской страницы со всеми необходимыми атрибутами.

f = FlatPage()
f.title = ""
f.content = ""
....
c = RequestContext(request, {
    'flatpage': f,
})
0 голосов
/ 25 декабря 2011

Если вы собираетесь использовать формы, вам не нужно использовать плоскую страницу - используйте обычный вид с шаблоном плоской страницы и RequestContext в качестве контекста.

...