Django将表单验证过账到另一个pag

2024-09-28 22:14:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用Django制作一个电视节目管理器,但是我在表单验证和重定向方面遇到了问题。 我有一个简单的页面,其中有一个表单,人们可以在其中搜索电视节目,另一个页面显示查询结果。(对于查询,我使用的是TVDB的API,不知道是否有用) 我想做的是:

  1. 如果我提交的表格有错误,则显示有相关错误的表格
  2. 如果表单有效,请转到另一个包含数据的页面,使用API进行查询

表单.py

class SearchShowForm(forms.Form):
    query = forms.CharField(
        max_length=120,
        required=True,
        widget=TextInput(attrs={'class': 'form-control', 'placeholder': 'Search'})
    )

视图.py

^{pr2}$

步骤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>

现在,如果我要进入步骤1页面,并且我提交了一个空白输入,那么页面“step2”将显示表单和错误,我想继续到step1页面。在

提前谢谢


Tags: pyformapi表单input错误步骤forms
1条回答
网友
1楼 · 发布于 2024-09-28 22:14:40

根据你的描述和视图.py,请继续执行步骤2这就是为什么:

  1. 用户位于“/step_1/”页上
  2. 他提交表格
  3. 因为表单中的action param指向“/step_2/”,所以它将指向该url
  4. 在视图中请求.方法=='POST'为True,但表单无效。在
  5. 您正在从“/step_1”呈现模板,但没有重定向用户。在

下面是修复示例:

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/')

相关问题 更多 >