我有一个视图,显示可以使用提交按钮保存的表单。我不希望在提交表单时重新加载视图。但是,如果函数没有返回响应,则会出错。
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)
答案 0 :(得分:2)
除非您通过ajax发布表单,否则无法在不重新呈现模板的情况下执行POST。如果您通过ajax提交表单并获得JSON,XML等响应,则可以使用表单错误或其他信息更新模板。
但是,考虑到您的视图中概述的用例,我建议使用@login_required decorator完全限制对视图的访问。如果这样做,您的视图逻辑可以大大简化。