2013-02-19 52 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

相关问题