2011-08-21 88 views
1

用戶提交表單並且未填寫必填字段時,我試圖丟棄'所需字段'消息。
正在發生的事情是,即使在提交表單之前,仍然顯示錯誤。提交後不應該進行驗證?提交表單之前「字段爲必填信息」

我有以下形式:

class LookforPlace(forms.Form): 
    name = forms.CharField(required=True,max_length=100,label='Name',error_messages = {'required': "This field is required..."}) 
    city = forms.CharField(required=False,label='City') 
    email = forms.EmailField() 

我有以下看法:

def newreview(request): 
    if request.method == 'GET': # If the form has been submitted... 
     form = LookforPlace(request.GET) # A form bound to the GET data 
     if form.is_valid(): # All validation rules pass 
      return HttpResponseRedirect('/newreview/valid') # Redirect after GET 
    else: 

     form = LookforPlace() # An unbound form 
    return render_to_response('newreview.html', { 
     'form': form, 
    }) 

和我有下面的HTML代碼:

<form action="/newreview/" method="get"> 
{% for field in form %} 
     <div class="fieldWrapper"> 
      {{ field.errors }} 
      {{ field.label_tag }}: {{ field }} 
     </div> 
    {% endfor %} 
<input type="submit" value="Submit" /> 
</form> 

回答

2

一個GET發出時您通常瀏覽到頁面,而不僅僅是當您使用該方法提交表單時 - 如果您想使用相同的視圖來顯示初始表格和處理通過GET提交,您應該檢查已提交的表單中的值。

一種選擇是給提交按鈕的名稱...

<input type="submit" name="submit" value="Submit"> 

...並檢查已提交的名稱作爲參數(這也是處理多種形式的好辦法提交按鈕,因爲只有被點擊的按鈕將被視爲成功的控件,並在請求中將其名稱作爲參數提交):

if 'submit' in request.GET: 
    # ... 
+0

非常感謝。我不知道。儘管如此,我想用POST是不一樣的。 – Nobita

相關問題