フォームに入力された値がエラーの時、アラートを出したいです。
def regist_save(request): regist_form = RegisterForm(request.POST or None) context = { 'regist_form': regist_form, 'profile_form': profile_form, } if request.method == "POST" and regist_form.is_valid(): try: username = regist_form.cleaned_data.get('username', None) email = regist_form.cleaned_data.get('email', None) user = User.objects.get(Q(username=username) | Q(email=email)) messages.warning(request, 'That detailed use is already available.') return render(request, 'regist.html', context) except User.DoesNotExist: regist = regist_form.save(commit=False) regist.is_staff = True regist.save() return render(request, 'detail.html') else: print(regist_form.errors) return render(request, 'regist.html', context)
とviews.pyに書きhtmlには
<div> <h2>新規アカウントの登録</h2> {% if regist_form.errors %} <div class="alert alert-danger" role="alert"> <p>{{ regist_form.errors }}</p> </div> {% endif %} <form class="form-horizontal" action="/regist_save/" method="POST"> <div class="form-group-lg"> <label for="id_username">ユーザネーム</label> {{ regist_form.username }} <p class="help-block">{{ regist_form.username.help_text }}</p> </div> <div class="form-group-lg"> <label for="id_email">Eメール</label> {{ regist_form.email }} </div> <div class="form-group-lg"> <label for="id_password">パスワード</label> {{ regist_form.password1 }} </div> <div class="form-group-lg"> <label for="id_password">パスワード(確認)</label> {{ regist_form.password2 }} </div> <div> <button type="submit">登録</button> <input name="next" type="hidden" /> </div> {% csrf_token %} </form>
と書きました。ユーザーネームが8文字未満の場合やパスワードが一致しない場合などに、
print(regist_form.errors) のところで
{% if regist_form.errors %} <div class="alert alert-danger" role="alert"> <p>{{ regist_form.errors }}</p> </div> {% endif %}
の部分で表示させたいです。ですが今は表示されません。どのように書けば理想のアウトプットが実現できるでしょうか?
あなたの回答
tips
プレビュー