添加表格到django-flatpages

时间:2011-12-24 23:36:57

标签: django django-forms django-flatpages django-formwizard

我有一个联系人&使用flatpages的信息页面。但是,我想添加一个允许访问者将其电子邮件签名到列表的表单。但是,如果我发送URL来呈现表单视图,它将不具有flatpages上下文。在我的电子邮件表单视图中包含flatpages上下文或将我的表单上下文添加到我的平面页面的最佳方法是什么。


感谢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 个答案:

答案 0 :(得分:3)

从表单页面视图返回正确的上下文。

这是发送给flatpages'模板(其中f是平面实例)

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

c = RequestContext(request, {
    'flatpage': f,
})
在您的视图中,您可以轻松地返回一个(未保存的)平面实例,其中包含您需要的所有attrs。

f = FlatPage()
f.title = ""
f.content = ""
....
c = RequestContext(request, {
    'flatpage': f,
})

答案 1 :(得分:0)

如果您打算使用表单,则不需要使用平面页面 - 使用带有平面模板的常规视图和RequestContext作为上下文。