2009-08-18 3 views
0

큰 장고 폼에서 4-5 개의 필드를 가져 와서 감사 페이지에 표시하려고합니다.Django 폼 입력을 감사 페이지에 표시

양식 입력을 기반으로하는 매개 변수가있는 쿼리 문자열을 사용하여 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

템플릿에서 사용할 수있는 값은보기에서 제공됩니다.

render_to_response 함수는 템플릿에 전달되는 값 사전을 제공합니다. this을 참조하십시오.

이유가 없으므로 locals()을 제공해 주셨습니다. 이유를 모르겠다.

request.POST과 같은 사전 - locals()을 제공하고 싶습니다.


귀하의 locals()request있을 것이다. 템플릿에서 request.POST을 사용하여 양식에 액세스 할 수 있음을 의미합니다.

+0

응답을 위해 Thansk - locals()를 사용하고 있습니다. beacuse 나는 또한 사용자 정의 컨텍스트 프로세서 (하위 도메인을 식별하고 장고에서 해당 문자열을 사용할 수있게 함)를 가지고 있습니다. 제안 된 변경을 시도하고 어떻게 진행되는지 살펴 봅니다. – Chris

+0

그건 대우를 받고 있습니다. 컨텍스트 프로세서를 통해 양식 데이터도 전달합니다. 참조 용 코드는 다음과 같습니다. def compare_form(request): \t from siteapp.compare.forms import ComparisonForm \t if request.method == 'POST': \t \t form = ComparisonForm(request.POST) \t \t if form.is_valid(): \t \t \t cd = form.cleaned_data \t \t \t return {'cd': cd} \t else: \t \t form = ComparisonForm() \t return {'form': form} 그런 다음 템플릿에서 컨텍스트를 호출합니다. – Chris

0

내가 무엇을하려고하는지 잘 모르겠다.

그러나 일반 텍스트로 양식 값을 렌더링하려면 django-renderformplain을 사용해보십시오. 다른 폼 처리 뷰 에서처럼 POST (또는 GET) 데이터로 양식을 초기화하고 양식 인스턴스를 컨텍스트에서 전달하십시오.