我正在尝试使用Django创建一个电视节目管理器,我遇到了表单验证和重定向问题。 我有一个简单的页面,其中有一个表单,人们可以搜索电视节目,以及另一个页面,其中显示查询的结果。 (对于查询我正在使用TVDB的API,我不知道它是否有用) 我想做的是:
forms.py
class SearchShowForm(forms.Form):
query = forms.CharField(
max_length=120,
required=True,
widget=TextInput(attrs={'class': 'form-control', 'placeholder': 'Search'})
)
views.py
def step1(request):
form = SearchShowForm()
context = {'form': form, 'step': 1}
return render(request, 'tvshows_manager/step_1.html', context)
def step2(request):
print(request.POST)
if request.method == 'POST':
form = SearchShowForm(request.POST)
if form.is_valid():
print(form.cleaned_data)
return render(request, 'tvshows_manager/step_2.html', {'data': form.cleaned_data})
else:
return render(request, 'tvshows_manager/step_1.html', {'form': form})
else:
return HttpResponseRedirect('/step_1/')
step_1.html的模板
<form action="{% url 'step2' %}" class="form-inline" method="POST">
{% csrf_token %}
<input type="submit" value="Rechercher" class="btn btn-default">
<div class="search-form-input">
{{ form.query }}
</div>
{% if form.errors %}
<p>Ce champs est nécessaire</p>
{% endif %}
</form>
目前,如果我要进入step1页面并提交空白输入页面'step2'正在显示表单和错误,我想留在step1页面。
提前致谢
答案 0 :(得分:1)
根据您的说明和views.py,您将继续第2步,原因如下:
以下是示例修复:
def step2(request):
print(request.POST)
if request.method == 'POST':
form = SearchShowForm(request.POST)
if form.is_valid():
print(form.cleaned_data)
return render(request, 'tvshows_manager/step_2.html', {'data': form.cleaned_data})
else:
return HttpResponseRedirect('/step_1/')
else:
return HttpResponseRedirect('/step_1/')