2010-01-22 72 views
0

我有這種說法功能:Django窗體:我如何顯示最初的空白窗體?

def search(request): 
    if request.method == 'GET': 
     form = SearchForm(request.GET) 
     if form.is_valid(): 
      last_name = form.cleaned_data['last_name'] 
      first_name = form.cleaned_data['first_name'] 
      lawyers = Lawyer.objects.all() 
      [ other if statements ] 
      .... 
    else: 
     form = SearchForm() 
     return render_to_response('search.html', {'form': form}) 

我認爲,當頁面加載else語句將與初始空白表單執行。但這種情況並非如此。其初始具有的形式顯示出來我要補充它的第if內:

def search(request): 
    if request.method == 'GET': 
     form = SearchForm(request.GET) 
     if form.is_valid(): 
      last_name = form.cleaned_data['last_name'] 
      first_name = form.cleaned_data['first_name'] 
      lawyers = Lawyer.objects.all() 
      [ other if statements ] 
      .... 
     form = SearchForm() 
     return render_to_response('search.html', {'form': form}) 
    else: 
     form = SearchForm() 
     return render_to_response('search.html', {'form': form}) 

你能幫爲什麼第一次if是從來沒有假的?謝謝。

整個視圖功能是here

回答

1

在您發表形式method=GET你實際上並沒有從初始請求改變方法:這是method=GET了。

你可以在你的表單中使用method=POST,和你的if語句將檢查是否存在,或者你可以檢查所需的字段,first_namelast_name或兩者的存在,因爲你的表格要求。

if 'first_name' in request.GET or 'last_name' in request.GET: 
    form = SearchForm(request.GET) 
else: 
    form = SearchForm() 

您可能要到抽象的形式本身,修改__init__方法,但你不必。