3

フラットページを使用する連絡先と情報ページがあります。ただし、訪問者がメールをリストに登録できるフォームを追加したいと考えています。ただし、フォーム ビューをレンダリングするために URL を送信すると、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,
    })
4

2 に答える 2

3

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

これは flatpages のテンプレートに送信されるコンテキストです (f は flatpage インスタンスです)

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,
})
于 2011-12-25T10:59:13.427 に答える
0

フォームを使用する場合は、フラットページを使用する必要はありません。フラットページ テンプレートで通常のビューを使用し、コンテキストとして RequestContext を使用します。

于 2011-12-25T05:18:38.743 に答える