Python 3.x 动态下降瓶

Python 3.x 动态下降瓶,python-3.x,flask-wtforms,Python 3.x,Flask Wtforms,我在这里玩得很开心。我想我已经仔细研究了人们曾经遇到但似乎无法解决的类似问题。 我有一对下拉菜单:第一个有一个包含3个选项的列表,第二个用相同的列表填充,少了从第一个列表中选择的选项。所有这些都有效。我的问题是,第二个将不会验证,抛出一个“无效选择”错误。谷歌搜索让我怀疑对象类型有问题。它被理解为str,我看到SelectField的默认行为是强制=unicode。我试着强迫别人做str,但没有成功。不管怎样,我会感激任何帮助。以下是我的相关代码: template.py- {% extends

我在这里玩得很开心。我想我已经仔细研究了人们曾经遇到但似乎无法解决的类似问题。 我有一对下拉菜单:第一个有一个包含3个选项的列表,第二个用相同的列表填充,少了从第一个列表中选择的选项。所有这些都有效。我的问题是,第二个将不会验证,抛出一个“无效选择”错误。谷歌搜索让我怀疑对象类型有问题。它被理解为str,我看到SelectField的默认行为是强制=unicode。我试着强迫别人做str,但没有成功。不管怎样,我会感激任何帮助。以下是我的相关代码:

template.py-

{% extends "header.html" %}
{% import "bootstrap/wtf.html" as wtf %}

{% block body %}
<form method="POST" action="/form_test/">
    <input type="hidden" name="csrf_token" value="{{ csrf_token() }}"/>
    <div class="form-group col-md-4 text-left">
        <h3 align="center">Router 1</h3>
            {{ wtf.form_field(form.isp_r1) }}
    </div>
    <div class="form-group col-md-4 text-left">
        <h3 align="center">Router 1</h3>
            {{ wtf.form_field(form.isp_r2) }}
    </div>
     <div class="container">
        <button type="submit" class="btn btn-primary" value="Create">Submit</button>
    </div>
</form>
custom.js-

function populateispwtf(s1,s2) {
    var s1 = document.getElementById(s1);
    var s2 = document.getElementById(s2);
    s2.innerHTML = "";
    if(s1.value == "1") {
        var optionArray = ["|",
                           "2|Level 3",
                           "3|Sprint",];
    } else if(s1.value == "2") {
        var optionArray = ["|",
                           "1|AT&T",
                           "3|Sprint",];
    } else if(s1.value == "3") {
        var optionArray = ["|",
                           "1|AT&T",
                           "2|Level 3",];

    } console.log(optionArray);
    for(var option in optionArray) {
        var pair = optionArray[option].split("|");
        var newOption = document.createElement("option");
        newOption.value = pair[0];
        newOption.innerHTML = pair[1];
        s2.options.add(newOption);
    }
}

这确实没有带来任何流量,但为了可能遇到同样问题的任何人:

“Not a valid choice”实际上是指wtform本身中的选项列表。(选项=[('val1','Choice 1 Text'),('val2','Choice 2 Text')]等)。因为在selectfield已经呈现之后,我使用javascript填充它,所以html改变了,但就wtforms而言,可用的选项没有改变。该解决方案是在预验证中,我发现了该解决方案,因此所有这些都归功于

我不会费心重复他说的话,因为我的解决办法是直截了当地重复他的话。我只是想指出他的情况,以防有人在动态选择字段(和层叠菜单)中挣扎,首先找到我的帖子

function populateispwtf(s1,s2) {
    var s1 = document.getElementById(s1);
    var s2 = document.getElementById(s2);
    s2.innerHTML = "";
    if(s1.value == "1") {
        var optionArray = ["|",
                           "2|Level 3",
                           "3|Sprint",];
    } else if(s1.value == "2") {
        var optionArray = ["|",
                           "1|AT&T",
                           "3|Sprint",];
    } else if(s1.value == "3") {
        var optionArray = ["|",
                           "1|AT&T",
                           "2|Level 3",];

    } console.log(optionArray);
    for(var option in optionArray) {
        var pair = optionArray[option].split("|");
        var newOption = document.createElement("option");
        newOption.value = pair[0];
        newOption.innerHTML = pair[1];
        s2.options.add(newOption);
    }
}