Flask:从一个页面到另一个页面的隐藏值

时间:2017-03-12 10:35:54

标签: flask hidden-field flask-wtforms

我已经阅读了其他问题,但仍然无法弄清楚出了什么问题。 我想从一个页面传递一个隐藏的值:仪表板到另一个页面:seegoodsrec 希望有人可以提供帮助。 我正在使用此表单来获取隐藏值:

class customerIDForm(Form):
    customerID = HiddenField()

然后在我的仪表板中使用它:

@app.route('/dashboard/', methods=['GET', 'POST'])
@login_required
def dashboard():
    form = customerIDForm()
    customerID = form.customerID.data 
    return render_template("dashboard.html",form = form)

我觉得这里很好。但我无法弄清楚HTML代码。在表格内我希望按钮提交到我的页面seegoodsrec:

{% for t in TOPIC_DICT["goodsrec"] %}
<td>
<form method=post action="/seegoodsrec/">
<input type="hidden" name="customerID" value="{{j[0]}}"
    <a href="{{t[3]}}"><button type="submit" value=Save class="btn btn-primary"style=
" margin-top: 5px; margin-bottom: 5px; height:44px; margin-right: 15px">
 <span class="glyphicon glyphicon-search"></span> {{t[2]}}</button></a>
</form>
</td>
{% endfor %}

j[0]是一个变量,根据您单击的表中的行,该按钮应该将值提交到页面seegoodsrec。这就是seegoodsrec的设置方式:

@app.route('/seegoodsrec/', methods=['GET', 'POST'])
@login_required
def seegoodsrec():
    form = customerIDForm()
    customerID = request.form.get('customerID')
    return render_template("seegoodsrec.html",form = form)

页面seegoodsrec未显示来自j[0]的值customerID。任何输入都非常感谢,谢谢!我只是在尝试seegoodsrec:

<p>test{{customerID}}</p>

修改

抱歉,这是一种痛苦,但我无法弄清楚这样做的正确方法。也许我页面的截图有助于: Screenshot from my page

基本上,我需要做的是:当我点击View Details时,我只想在我点击的行中看到客户的详细信息(取决于ID)。查看详细信息将带我到一个名为seegoodsrec的新页面。所以,我的想法是将隐藏的值传递给页面seegoodsrec,这是客户ID。然后,我可以使用该值仅显示该客户的良好接收器。

非常感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

你在这里做错了。

@app.route('/dashboard/', methods=['GET', 'POST'])
@login_required
def dashboard():
    form = customerIDForm()
    customerID = form.customerID.data
    ^ ~~~~~~~~
     This doesn't do anything. Consider doing it reverse?
    return render_template("dashboard.html",form = form)

另外,GET和POST不同。请将它们限制为一个,或者编写单独的处理程序。

答案 1 :(得分:0)

如果这有助于任何人。以下是我选择的方式:

<form method=post action="/seegoodsrec/">                    
<a href="{{t[3]}}"><button type="submit" name="customerID"
value="{{j[0]|int}}" class="btn btn-primary" style=" margin-top: 5px;
margin-bottom: 5px; height:44px; margin-right: 15px">
<span class="glyphicon glyphicon-search"></span> {{t[2]}}
</button>
</a>
</form>

在烧瓶中:

def seegoodsrec():
customerID = request.form.get('customerID')
mySQL3 = SelectGoodsrec(session['ID']) #displayed goodsreceiver with user ID
mySQL8 = SelectGoodsrecSEE(customerID)
c, conn = connection()

x = c.execute("SELECT * FROM goodsrec WHERE Gr_Cm_id = (%s)",
                      [str(customerID)])
if int(x) < 1:
    flash("Please, create a goods receiver for this customer")

mySQL8选择customerID并选择相应的货物接收器。