2

送信ボタンで保存できるフォームを表示するビューがあります。フォームの送信時にビューを再読み込みしたくありません。ただし、関数が応答を返さない場合はエラーが発生します。

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)
4

1 に答える 1

2

ajaxを介してフォームを投稿しない限り、テンプレートを再レンダリングせずにPOSTを実行することはできません。ajaxを介してフォームを送信し、JSON、XMLなどの応答が返される場合は、フォームエラーまたはその他の情報でテンプレートを更新できます。

ただし、ビューで概説されているユースケースを考えると、 @login_requiredデコレータを使用してビューへのアクセスを完全に制限することをお勧めします。そうすれば、ビューロジックを大幅に簡素化できます。

于 2013-02-19T20:46:35.723 に答える