반응형
Django Forms : 유효하지 않은 경우 오류 메시지와 함께 양식 표시
장고 양식, 양식이 유효한지 확인할 수 있습니다.
if form.is_valid():
return HttpResponseRedirect('/thanks/')
하지만 유효하지 않은 경우 어떻게해야하나요? 오류 메시지가있는 양식을 어떻게 반환합니까? 예제에서 "else"가 보이지 않습니다.
양식이 유효하지 않을 때 동일한보기를 렌더링하면 템플릿에서를 사용하여 양식 오류에 액세스form.errors
할 수 있습니다 .
{% if form.errors %}
{% for field in form %}
{% for error in field.errors %}
<div class="alert alert-danger">
<strong>{{ error|escape }}</strong>
</div>
{% endfor %}
{% endfor %}
{% for error in form.non_field_errors %}
<div class="alert alert-danger">
<strong>{{ error|escape }}</strong>
</div>
{% endfor %}
{% endif %}
예 :
def myView(request):
form = myForm(request.POST or None, request.FILES or None)
if request.method == 'POST':
if form.is_valid():
return HttpResponseRedirect('/thanks/')
return render_to_response('my_template.html', {'form': form})
views.py
from django.contrib import messages
def view_name(request):
if request.method == 'POST':
form = form_class(request.POST)
if form.is_valid():
return HttpResponseRedirect('/thanks'/)
else:
messages.error(request, "Error")
return render(request, 'page.html', {'form':form_class()})
유효하지 않은 다른 양식의 오류를 표시하려면 아래에했던 것처럼 {{form.as_p}}를 입력하세요.
page.html
<html>
<head>
<script>
{% if messages %}
{% for message in messages %}
alert(message);
{% endfor %}
{% endif %}
</script>
</head>
<body>
{{form.as_p}}
</body>
</html>
def some_view(request):
if request.method == 'POST':
form = SomeForm(request.POST)
if form.is_valid():
return HttpResponseRedirect('/thanks'/)
else:
form = SomeForm()
return render(request, 'some_form.html', {'form': form})
단순히 플래그 변수를 넣을 수 있습니다 (이 경우 is_successed) .
def preorder_view(request, pk, template_name='preorders/preorder_form.html'):
is_successed=0
formset = PreorderHasProductsForm(request.POST)
client= get_object_or_404(Client, pk=pk)
if request.method=='POST':
#populate the form with data from the request
# formset = PreorderHasProductsForm(request.POST)
if formset.is_valid():
is_successed=1
preorder_date=formset.cleaned_data['preorder_date']
product=formset.cleaned_data['preorder_has_products']
return render(request, template_name, {'preorder_date':preorder_date,'product':product,'is_successed':is_successed,'formset':formset})
return render(request, template_name, {'object':client,'formset':formset})
나중에 템플릿에 아래 코드를 넣을 수 있습니다.
{%if is_successed == 1 %}
<h1>{{preorder_date}}</h1>
<h2> {{product}}</h2>
{%endif %}
참고 URL : https://stackoverflow.com/questions/14647723/django-forms-if-not-valid-show-form-with-error-message
반응형
'IT story' 카테고리의 다른 글
깨지지 않는 공백은 JavaScript 문자열에서 어떻게 표현됩니까? (0) | 2020.08.31 |
---|---|
상관 행렬을 그래프로 플로팅 (0) | 2020.08.31 |
Pandas 또는 Numpy Nan을 None으로 대체하여 MysqlDB와 함께 사용 (0) | 2020.08.31 |
id () 함수는 무엇에 사용됩니까? (0) | 2020.08.31 |
Swift를 사용하여 NSDates를 정수로 초 단위로 찾기 (0) | 2020.08.31 |