2017-05-02 5 views
0

私はすべてのページに表示したいので、私は自分のbase.html上にフォームを持っています。フォームが有効でないときに検証のエラーを表示したいのですが、それは私のビューにリダイレクトされます検証は偽であり、私がやった方法をここで私にエラー500Django:フォームがbase.htmlで有効でない場合、フォーム検証エラーを表示する方法は?

をスロー:views.py

def askProject(request): 
    if request.method == 'POST': 
     form = AskProjectForm(request.POST) 
     if form.is_valid(): 
      form.save() 

      return redirect(reverse('success-msg')) 
    else: 
     form = AskProjectForm() 

forms.py:

class AskProjectForm(forms.ModelForm): 
    class Meta: 
     model = AskProject 
     fields = ['prenom', 'nom', 'numero'] 

    def clean_prenom(self): 
     prenom = self.cleaned_data['prenom'] 
     if len(prenom) < 3: 
      raise ValidationError('Votre prénom doit etre plus long que 1 caractère.') 
     return prenom 
    ... 

context_processors.py:

from pages.forms import AskProjectForm 

def AskProjectFormProcessor(request): 
    return {'AskProjectForm' : AskProjectForm()} 

base.html:

<form method="post" action="{% url 'ask-project' %}"> 
    {% csrf_token %} 

    <div class="col-lg-4 col-md-4 col-sm-12 col-xs-12"> 
     <p>{{ AskProjectForm.prenom.errors }}</p> 
     <label for="prenom">Votre prenom<span class="form-required" title="Ce champ est requis.">*</span></label> 
     {{ AskProjectForm.prenom }} 
    </div> 
    ... 

    <div class="form-button col-lg-12 col-md-12 col-sm-12 col-xs-12"> 
    <button class="btn btn-default submit">C'est parti !</button> 
    </div> 
</form> 

私は、ユーザー(リクエスト、...、{...}をレンダリングすることはできませんので、どのように私はこの問題を解決することができます)のbase.html?

エラー確認メッセージを表示しているユーザーと同じページに戻ってください。

答えて

1

ajaxリクエスト(jQuery)を使用してデータを送信できます。 他のページへのリロードやリダイレクトは発生しません。 また、フォームにエラーがある場合は、フロントエンドで検証することもできます。 フォームが有効な場合は、応答オブジェクトを操作することができます。

+0

これは私がやったと思ったものです! – Lindow

+0

jquery ajaxリクエストは、UIを妨害する必要がないバックグラウンドAPIコールに対して、より機敏です。 – zaidfazil

関連する問題