Django - 保存有关提交但不重新加载视图的数据

时间:2013-02-19 20:41:54

标签: 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)

1 个答案:

答案 0 :(得分:2)

除非您通过ajax发布表单,否则无法在不重新呈现模板的情况下执行POST。如果您通过ajax提交表单并获得JSON,XML等响应,则可以使用表单错误或其他信息更新模板。

但是,考虑到您的视图中概述的用例,我建议使用@login_required decorator完全限制对视图的访问。如果这样做,您的视图逻辑可以大大简化。