【问题标题】:how to pass a variable from href to flask [duplicate]如何将变量从href传递到烧瓶[重复]
【发布时间】:2017-08-20 08:32:55
【问题描述】:

这是我的烧瓶 python 代码:

@app.route('/ques/<string:idd>',methods=['GET', 'POST'])
def ques(idd):
    print idd

Javascript 代码:

var counts = {{ test|tojson }};
var text = "";
var texts= "";
for (i = 1; i < counts.length; i=i+2){
    texts=counts[i-1];
    document.write("<a href=\"{{url_for('ques',idd=texts)}}\">"+counts[i]+"</a></br></br>");
}

如何将idd传递给python函数?

【问题讨论】:

  • 这是一段 JavaScript 代码...
  • 是的!我如何将 idd 传递给 python 函数? @Yuval Pruss
  • 对路由执行get请求?
  • get 请求不会在 python 中,它会是你的 javascript
  • 我的代码对吗? @keef 贝克

标签: javascript python html flask


【解决方案1】:

Jinja 在服务器上呈现,因此您无法将其与 javascript 混合搭配。试试这样的:

var counts = {{ test|tojson }},
    // before the HTML file gets to the browser this line will be:
    // baseURL = "/ques/REPLACE"
    baseURL = "{{ url_for('ques', idd='REPLACE') }}";

for (i = 1; i < counts.length; i = i+2) {
    var url = baseURL.replace('REPLACE', counts[i-1]);
    document.write("<a href=\"" + url + "\">" + 
                   counts[i] + "</a></br></br>");
}

否则,您需要直接在 Javascript 中构建 URL。

更好的方法是使用请求参数:

@app.route('/ques/')
def ques():
    # url is: /ques/?idd=ABC
    idd = request.args.get('idd', default='', type=str)
    print idd

Javascript:

var counts = {{ test|tojson }},
    baseURL = "{{ url_for('ques') }}";

for (i = 1; i < counts.length; i = i+2) {
    var url = baseURL + '?idd=' + counts[i-1];
    document.write("<a href=\"" + url + "\">" + 
                   counts[i] + "</a></br></br>");
}

【讨论】:

  • 非常感谢!它的工作!!!!!
  • 但我收到一个错误,因为“UnboundLocalError: local variable 'idd' referenced before assignment”@PJ Santoro
  • 你试过 request.args 方法了吗?我想我不小心在那里有一个 javascript 格式的评论,而不是 python 方式
  • 是的,现在它的工作..非常感谢你!
猜你喜欢
  • 2020-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-08
  • 1970-01-01
  • 1970-01-01
  • 2020-09-26
相关资源
最近更新 更多