2014-03-25 111 views
1

我創建的Django form.py文件:如何清除在Django表單數據

from django import forms 
from models import ResumeModel 


class ResumeForm(forms.ModelForm): 
    username = forms.CharField(max_length = 200) 
    first_name = forms.CharField(max_length = 200) 
    last_name = forms.CharField(max_length = 200) 
    fathers_name = forms.CharField(max_length = 200) 
    email = forms.EmailField(required=True, label='Your e-mail address') 
    message = forms.CharField(widget=forms.Textarea) 
    class Meta(): 
     model = ResumeModel 
     fields =('username','first_name','last_name','fathers_name','email','message') 

views.py:

def save(request): 
    if 'submit' in request.POST: 
     form = ResumeForm(request.POST) 
     if form.is_valid(): 
      form.save() 
      form = ResumeForm() 
      return render(request, '/success/', {'form': form}) 
    else: 
     form = ResumeForm() 
    args = {} 
    args.update(csrf(request)) 
    args['form'] =form 
    return render_to_response('create.html',args) 

urls.py:

urlpatterns = patterns('', 
    url(r'^admin/', include(admin.site.urls)), 
    url(r'^save/', 'Resume.views.save'), 
    url(r'^success/$', TemplateView.as_view(template_name='success.html')), 
) 

現在一切正常。問題是,當我提交表單時,它會轉到成功頁面,當我回到上一頁是/ save/page時,它將保存我提交的字段中的所有值。如何清除字段,如果我按back button to go back to that form page having url as "/save/ "

回答

1

這是關於瀏覽器的行爲。瀏覽器在緩存中顯示頁面,而不是調用新頁面。

您可以通過使用javascript解決此問題。不幸的是,瀏覽器也不再運行javascript代碼。

但你可以嘗試:

$(window).bind("pageshow", function() { 
    // Clean form values 
}); 

的jQuery

+0

在哪裏編寫這些行> –

+0

無論你想要什麼。來自w3schools 的示例 [link](http://www.w3schools.com/jquerymobile/tryit.asp?filename=tryjqmob_event_pageshow)。 – obayhan

1

這是一個瀏覽器實現細節。您可能可以用JavaScript解決它,或者打破緩存等。該主題在this stackoverflow question中討論。

然而,更好的UI方法可能是使用AJAX發佈表單的序列化版本。如果您成功驗證並處理了您的view中的表單(將新行插入到您的簡歷模型表等中),您可以發送一個JSON響應,該響應可能調用一些JavaScript來清除表單域(可能使用.reset())。如果需要,用戶可以輕鬆地提交其他表單。

另請注意,建議您在成功使用POST(此時您的響應爲render())後使用HttpResponseRedirect。這會阻止用戶重新提交表單並潛在地複製數據庫中的行等。