2016-07-25 10 views
0

私はform.pyで自分のフォームのカスタム検証を書きましたが、機能しません。何も表示されません(「電子メールが存在しません」)。送信ボタンを押すと、ページをリフレッシュするように見えます。 私は助けていただければ幸いです。ここボタンのクリックでdjangoのカスタム検証が表示されない

は私view.pyです:ここ

def delete(request): 
    if request.method == 'POST' and "DeleteButton" in request.POST: 
     form = LoginPageDelete(request.POST) 
     if form.is_valid(): 
      DeleteData = form.cleaned_data 
      q = DeleteData["emailD"] 
      query = Users.objects.get(email = q) 
      query.delete() 
      fetch = Users.objects.all() 
      return render(request,'Result.html',{'QueryDelete':fetch.values(),}) 

    FormDelete = LoginPageDelete() 
    return render(request,'delete.html',{"FormDelete":FormDelete,}) 

はテンプレートです:ここ

<html> 
<head> 
    <title>Delete</title> 
</head> 
<body> 
    {% if FormDelete.errors %} 
    <p style="color:red">Please correct the problems</p> 
    123 
    {%endif%} 

    <form action="" method="POST"> 
     <table> 
      {{FormDelete.as_table}} 
     </table> 
     {%csrf_token%} 
     <input type="submit" value="Delete" name="DeleteButton"> 
    </form> 
</body> 

forms.pyさ:

from django import forms 
from login.models import Users 

class LoginPageDelete(forms.Form): 
    emailD = forms.EmailField(required=True) 

    def clean_emailD(self): 
     email = self.cleaned_data['emailD'] 
     if not Users.objects.filter(email = email).exists(): 
      raise forms.ValidationError("email not exist") 
     return email 

答えて

0

あなたは単にではありません検証されたフォームをteに返す紋板。毎回あなたのビューでは、代わりにLoginPageDelete()の新しいインスタンスを返し、検証情報でそのインスタンスを破棄します。

def delete(request): 
    if request.method == 'POST' and "DeleteButton" in request.POST: 
     form = LoginPageDelete(request.POST) 
     if form.is_valid(): 
      DeleteData = form.cleaned_data 
      q = DeleteData["emailD"] 
      query = Users.objects.get(email = q) 
      query.delete() 
      fetch = Users.objects.all() 
      return render(request,'Result.html',{'QueryDelete':fetch.values(),}) 
    else:# here request.method is get 
     form = LoginPageDelete() 

    return render(request,'delete.html',{"FormDelete":form}) 
+0

回答ありがとうございました。問題を解決しました – ali