2014-06-10 3 views
2

사용자가 선택한 드롭 다운 필드의 값을 가져 와서 다음 페이지에서 드롭 다운 선택에 따라 일부 프로필 목록을 필터링하고 싶습니다.Django 1.6 : 드롭 다운에서 다른 템플릿 페이지로 값을 전달하는 방법

내 index.html 페이지에서이 작업을했습니다하고 드롭 다운에서 옵션을 선택하도록 싶습니다 제출 히트 페이지를

<div class="form-group"> 
     <form action="/doclistings/" method="post"> 
     <select class="form-control" id="select"> 
      <option><b>Choose a Speciality...</b></option> 
      <option value ="Dermatologist">Dermatologist</option> 
      <option value = "Dentist">Dentist</option> 
      <option value = "ENT">Ear, Nose and Throat (ENT)</option> 
      <option value = "Opthalmologist">Eye Doctor</option> 
      <option value = "Psychiatrist">Psychiatrist</option> 
      <option value = "Orthopedist">Orthopedist</option> 
     </select> 
     <span class="input-group-btn"> 
      <button class="btn btn-primary" type="submit" name="submit" id="ss-submit">Find Doctors</button> 
     </span> 
     </div> 

doclistings.html

을 doclistings.html하는 리디렉션
{% for doc in doclist %} 
      {% if doc.specialization == } # value from the last page 
      <div class = "doctorrow"> 
      <h2><a href="/docprofile/{{doc.id}}/">{{doc.name}}</a></h2> 
      <h3> {{doc.specialization}}</h3>   
      </div> 
      </div> 
     {% endfor %} 

views.py

def index(request): 

if request.method == "POST": 
    form = DropdownSelectionForm(request.POST) 

    if form.is_valid(): 
     selection = form.cleaned_data['value'] 

     return HttpResponseRedirect('/doclistings') 
else: 
    form = DropdownSelectionForm() 

return render(request, 'meddy1/index.html') 

@csrf_exempt 
def doclistings(request): 
    return render(request, 'meddy1/doclistings.html', {'doclist': Doctor.objects.all()}) 

forms.py

,
class DropdownSelectionForm(forms.Form): 
    selection = forms.CharField() 
+0

[양식 마법사] (https://docs.djangoproject.com/en/dev/ref/contrib/formtools/form-wizard/)이 좋은 옵션입니다. –

답변

0

POST를 시도한 후 게시 된 값 request을 사용하여 다음보기에서 렌더링하십시오. 당신은 다음 중 하나를 수행 할 수

https://docs.djangoproject.com/en/1.6/topics/forms/#using-a-form-in-a-view

편집 - -

  1. 설정 alldocs는 형태로 form action으로보고 GETform method을 설정 여기에 문서입니다. 따라서 양식이 게시되면 012lda의 값을 가질 수 있습니다.

  2. 인덱스 뷰를 사용하고 POST 동작이 request.method을 확인하여 수행 여부를 확인하고 거기에서 값을 취득하고 매개 변수로 필요로하는 값을보기로 리디렉션 redirect (django.shortcuts에서) 사용 .

POST 또는 GET을 검사하는 방법은 이전에 언급 한 문서에 설명되어 있습니다.

+0

대답을 자세히 설명해 주시겠습니까? 인덱스 뷰에서 게시물을 사용하고 alldocs 뷰에서 렌더링을 요청해야합니까? –

+0

2 단계를 완료했다고 생각하지만 이전 페이지에서 값을 얻는 방법을 아직 잘 모릅니다. 나는 Django에게 아주 새로운 .. –

관련 문제