2011-12-24 66 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的爲您的上下文。