2

我有一个显示可以使用提交按钮保存的表单的视图。我不希望在提交表单时重新加载视图。但是,如果函数不返回响应,我会遇到错误。

视图.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)
4

1 回答 1

2

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

但是,鉴于您视图中概述的用例,我建议使用@login_required 装饰器完全限制对视图的访问。如果你这样做,你的视图逻辑可以大大简化。

于 2013-02-19T20:46:35.723 回答