在感谢页面上显示Django表单输入

时间:2009-08-18 10:02:03

标签: python django forms

我正在尝试从大型django表单中取出4-5个字段并在感谢页面上显示它们。

我希望以一定程度的控制来显示这些值,因为我将根据表单输入构建一个带有参数查询字符串的iFrame。

目前我有:

forms.py ----

-*- encoding: utf-8 -*-
from django import forms
from django.forms import extras, ModelForm
from django.utils.safestring import mark_safe
from siteapp.compare.models import Compare

HOWMUCH_CHOICES = (
    ('', '--------------------------'),
    ('20000', '20,000'),
    ('30000', '30,000'),
...
    ('2000000', '2,000,000'),
)

HOWLONG_CHOICES = (
    ('', '--------------------------'),
    ('1', '1 Year'),
...
    ('39', '39 Years'),
    ('40', '40 Years'),
)

...等

class ComparisonForm(forms.Form):
    js = mark_safe(u"document.compareForm.how_much.selectedindex = 4;")
    how_much = forms.ChoiceField(choices=HOWMUCH_CHOICES,
                widget=forms.Select(attrs={'onMouseOver':'setDefaults()','class':'required validate-selection','title':'Select value of cover required','onLoad': js}))
    how_long = forms.ChoiceField(choices=HOWLONG_CHOICES,
                widget=forms.Select(attrs={'class':'required validate-selection','title':'Select length of cover required'}))
    who_for = forms.ChoiceField(choices=WHOFOR_CHOICES,
                widget=forms.Select(attrs={'class':'required validate-selection','title':'Select whether you require cover for a partner also'}))
        ...
    class Meta:
        model = Compare

models.py -----

class Compare(models.Model):
    how_much = models.CharField(max_length=28,choices=HOWMUCH_CHOICES#,default='100000'
    )
    how_long = models.CharField(max_length=28,choices=HOWLONG_CHOICES)
    who_for = models.CharField(max_length=28,choices=WHOFOR_CHOICES)
...
    partner_date_of_birth = models.DateField(blank=True)

def __unicode__(self):
    return self.name

views.py ----

def qc_comparison(request):
    return render_to_response('compare/compare.html', locals(), context_instance=RequestContext(request))

urls.py ----

(r'^compare/thanks/$', 'django.views.generic.simple.direct_to_template', {'template': 'compare/thanks.html'}),

我正在尝试从文档中挖掘出最佳方法,但目前尚不清楚如何将变量正确传递到感谢页面。

2 个答案:

答案 0 :(得分:0)

模板可用的值由视图提供。

render_to_response函数提供传递给模板的值字典。请参阅this

没有充分理由,你提供了locals()。不知道为什么。

您希望提供类似request.POST的词典 - 而不是locals()


您的locals()request。这意味着您的模板可以使用request.POST来访问表单。

答案 1 :(得分:0)

我不确定我是否明白你要做什么。

但是如果您想以纯文本格式呈现表单值,可以尝试django-renderformplain。只需使用POST(或GET)数据初始化您的表单,就像在任何其他表单处理视图中一样,并在上下文中传递表单实例。