2016-04-08 15 views
0

'new_user'というビューを表すテンプレート(new_user.html)があります。ビューには、フィールドがほとんどないフォームとデータの検証が含まれています。テンプレート内に検証エラーメッセージが表示されます(存在する場合)。ここに問題はありません。django:別のビューから検証エラーを発生させよう

同じテンプレート内の別のビューのインクルードタグを追加すると、新しいフォームの検証エラーメッセージが表示されません。

<table> 
<form action="/modify_attr/" method="post"> 
{% csrf_token %} 
{% for field in form %} 
    <tr> 
    <td align="left"{{ field.label_tag }}</font></td> 
    <td align="left">{{ field }}</td> 
    <td align="left"> 
    {% if field.errors %} 
     {% for err in field.errors %} 
       <font color="red">&nbsp;&nbsp;{{ err }}</font> 
     {% endfor %} 
    {% endif %} 
    </td> 
    </tr> 
{% endfor %} 
<tr> 
    <td></td> 
    <td><input type="submit" value="update" class="button" name="modify_attr"/></td> 
</tr> 

:ビューを別々に(http://localhost:8000 \ modify_attr)を見ると、検証エラーが

がmodify_attr.htmlには、以下が含まれていnew_user.html

<div id="modify_attr"> 
    {% include "modify_attr.html" %} 
</div> 

にタグを含める作業します再生回数:

def modify_attr(request): 

    if request.method == 'POST' and request.POST.get("modify_attr", "") == 'update': 
     modform = modForm(request.POST, prefix='mod_attr') 

     if modform.is_valid(): 
      # do stuff 
      return HttpResponseRedirect(reverse('modify_attr')) 

    else: 
     modform = modForm(prefix='mod_attr') 

    return render(request, 'modify_attr.html', {'modform': modform}) 

def new_user(request): 

    if request.method == 'POST' and request.POST.get("create_user", "") == 'apply': 
     form = NameForm(request.POST, prefix='new_user') 
     modform = modForm(prefix='mod_attr') 

     if form.is_valid():  
      # do stuff 
      return HttpResponseRedirect(reverse('new_user')) 

    else: 
     form = NameForm(prefix='new_user') 
     modform = modForm(prefix='mod_attr') 

    return render(request, 'new_user.html', {'form': form, 
            'modform': modform}) 

ありがとうございました。

+0

は、あなたがしてください取得しているエラーメッセージが含まれます。 –

+0

私が知っているエラーはありません。 – strongbad

答えて

0

ここでの答えは、テンプレートにレンダリングする代わりにフォームを返すことです。たとえば:

return render(request, 'modify_attr.html', {'modform': modform}) 

だけです:

return modform 
関連する問題