2011-12-24 12 views
2

私はフラットページを使用して&情報ページを持っています。しかし、私は訪問者がリストに自分の電子メールに署名することができるフォームを追加したい。しかし、フォームビューをレンダリングするためにURLを送信すると、フラットページのコンテキストはありません。フラットページコンテキストを私の電子メールフォームビューに含めるか、自分のフォームコンテキストを私のフラットページに追加するための最良の方法は何ですか?django-flatpagesにフォームを追加


この溶液のためにTommasa Barbugliに感謝します。あなたのコンテキストとしてフラットページテンプレートを使用して定期的なビューを使用し、RequestContextの - あなたはフォームを使用してしようとしている場合、あなたはフラットページを使用する必要はありません

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

フォームページビューから正しいコンテキストを返します。

これは、あなたが簡単にあなたが必要なすべてのattrsにして(保存されていない)フラットページのインスタンスを返すことができflatpagesをテンプレートに送られたコンテキスト(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

ありがとうございます!私はとにかくやっていると思っていたことだけです。 –

0

:私は今持っています。

関連する問題