2011-12-24 71 views
2

我有一个联系人&使用了页面的信息页面。不过,我想添加一个允许访问者将他们的电子邮件签名到列表的表单。但是,如果我发送URL来呈现表单视图,则它将不具有flatpages上下文。在我的电子邮件表单视图中包含flatpages上下文的最佳方式是什么,或者将我的表单上下文添加到我的flatpage中。将表单添加到django-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

从窗体页面视图返回正确的上下文。

这是

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

c = RequestContext(request, { 
    'flatpage': f, 
}) 
在您的视图

可以方便地与你所需要的所有ATTRS返回(未保存的)简单页面实例发送到的flatpages'模板(其中f是简单页面实例)的上下文。

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

谢谢!那正是我想要做的。 – 2011-12-25 20:26:28

0

如果你打算使用的形式,那么你就需要使用简单页面 - 使用常规视图与简单页面模板,RequestContext的为您的上下文。