2013-02-19 89 views
2

我有一個視圖,顯示一個表單,可以保存一個提交按鈕。我不希望在提交表單時重新加載視圖。但是,如果該函數沒有返回響應,則出現錯誤。Django - 保存數據在提交但不重新加載視圖

view.py

from django.shortcuts import render_to_response 
from ezmapping.models import * 
from django.forms.models import modelformset_factory 

def setAppOptions(request, map_name): 
    if request.user.is_authenticated(): 
     app_selected = EzApp.objects.get(app_name=app_name, created_by=request.user) 
     formset = ezAppOptionFormSet(user=request.user, instance=app_selected) 
     if request.method == 'POST': 
      formset = ezAppOptionFormSet(request.POST, instance=app_selected, user=request.user) 
      if formset.is_valid(): 
       formset.save() 

     return render_to_response("manage_app_options.html", {'formset': formset}, context_instance=RequestContext(request)) 
    else: 
     error_msg = u"You are not logged in" 
     return HttpResponseServerError(error_msg) 

回答

2

你將不能夠做POST,而無需重新渲染模板,除非您發佈通過AJAX的形式。如果您通過ajax提交表單並獲得JSON,XML等的響應,則可以使用表單錯誤或其他信息更新模板。

但是,考慮到您的視圖中概述的用例,我建議使用@login_required decorator完全限制訪問視圖。如果你這樣做,你的視圖邏輯可以大大簡化。

+0

好的,謝謝。那麼,重新加載頁面時是否可以保持CSS狀態?示例:請記住,在提交 – 2013-02-19 21:05:05

+0

之前,某個字段集是否已摺疊或顯示。有幾種方法可以做到這一點。一種方法是在展現在表單中的隱藏字段中保留展開/摺疊的值,或者使用JavaScript並將值保存在cookie中。然後,您可以在頁面重新加載並切換字段集時備份值。 – Brandon 2013-02-19 21:32:26

+0

你會建議使用AJAX發佈數據而不重新加載或使用cookie嗎?我的目標是在一篇文章後記住切換的場景。 – 2013-02-19 21:38:20

相關問題