我正在尝试从大型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'}),
我正在尝试从文档中挖掘出最佳方法,但目前尚不清楚如何将变量正确传递到感谢页面。
答案 0 :(得分:0)
模板可用的值由视图提供。
render_to_response
函数提供传递给模板的值字典。请参阅this。
没有充分理由,你提供了locals()
。不知道为什么。
您希望提供类似request.POST
的词典 - 而不是locals()
。
您的locals()
将request
。这意味着您的模板可以使用request.POST
来访问表单。
答案 1 :(得分:0)
我不确定我是否明白你要做什么。
但是如果您想以纯文本格式呈现表单值,可以尝试django-renderformplain。只需使用POST(或GET)数据初始化您的表单,就像在任何其他表单处理视图中一样,并在上下文中传递表单实例。