1

登録機能があり、プロジェクトのすべてのページに表示されますcontext_processors

base.html のモーダル ボックスでフォームが有効でない場合にエラーを表示するにはどうすればよいですか? エラーが/register/サブページに表示されるようになりました。

ビュー.py

def UserRegistration(request):
    if request.user.is_authenticated():
        return HttpResponseRedirect('/showcase/')
    if request.method == 'POST':
        form = RegistrationForm(request.POST)
        if form.is_valid():
            user = User.objects.create_user(username=form.cleaned_data['username'], email= form.cleaned_data['email'], password = form.cleaned_data['password'])
            user.save()
            klient = ClientProfile(user=user, name= form.cleaned_data['name'], address= form.cleaned_data['address'], zip_code=form.cleaned_data['zip_code'], city=form.cleaned_data['city'], tel= form.cleaned_data['tel'] )
            klient.save()
            return HttpResponseRedirect('/')

        return render_to_response('registration.html', {'form':form}, context_instance=RequestContext(request)) 

    else:
        form = RegistrationForm()
        context= {'form':form}
        return render_to_response('registration.html', context, context_instance=RequestContext(request))

context_processors.py

from content.forms import *

def include_register_form(request):
    form = RegistrationForm()
    return {'register_form':form}

base.html

<div class="modalBox" id="modalRegister">
   <div class="modalBox_iks"></div>
   <div class="titleShowcase">Register</div>
   <form method="POST" action="/register/">{%csrf_token%}
{{register_form}}
<input type="submit" value="Register"> 
</form>
</div> 

可能です?

4

2 に答える 2

2

Ajax 呼び出しでデータを投稿する必要があります。モーダルでエラーを表示するには、Ajax 呼び出しが必要です。または、サードパーティのアプリを使用して Ajax フォーム検証を有効にすることもできます

于 2013-06-10T12:17:08.673 に答える
1

どのバージョンのジャンゴを使用していますか? django 1.5 を使用している場合は、FormView を使用してください。

view.py

class UserRegistration(FormView):
    template_name = 'form_registration.html'
    def render_to_response(self, context):

        if self.request.user.is_authenticated():
            return redirect('other_page')
        return super(UserRegistration, self).render_to_response(context)

    def form_valid(self, form):
        # Here you know that you form is valid
        user = User.objects.create_user(username=form.cleaned_data['username'], email=form.cleaned_data['email'], password = form.cleaned_data['password'])
        user.save()
        klient = ClientProfile(user=user, name= form.cleaned_data['name'], address= form.cleaned_data['address'], zip_code=form.cleaned_data['zip_code'], city=form.cleaned_data['city'], tel= form.cleaned_data['tel'] )
        klient.save()
        return redirect('home') #I'm not sure that this really redirect you

ここで、エラーを表示する「form_registration.html」テンプレートを作成します。ここを参照

そしてあなたの「base.html」で

<div class="modalBox" id="modalRegister">
   <div class="modalBox_iks"></div>
   <div class="titleShowcase">Register</div>
   <form method="POST" id="ajax_form"action="/register/">{%csrf_token%}
    {% include "form_registration.html" with form=form %}
    <input type="submit" id="ajax_form_submit"value="Register"> 
    </form>
</div> 

さて、あなたの ajax には、この jquery plug-inを使用できます。「ターゲット」オプションを設定して、サーバーの応答でオーバーライドできます

多分そのJavaScriptがあなたを助けます:

<script>
    $('#modalRegister').click("#ajax_form_submit", function(event){
        event.preventDefault();
        $('#ajax_form').ajax_form(target:'#ajax_form').submit();
    })
</script>

そのプラグインを使用しましたが、問題なく動作します。

その助けを願っています!

于 2013-06-10T13:55:12.610 に答える