【发布时间】:2015-06-15 10:08:10
【问题描述】:
我正在构建看起来像这样的 URL,使用 Flask 进行路由:
http://hostname/nris/resource/00001234 http://hostname/nris/resource/99000025
最后一段是一个 8 位整数,将匹配我数据库中的字符串。前导零(如果有)很重要。
我已经实现了一个基于Does Flask support regular expressions in its URL routing? 的自定义正则表达式转换器。只要数字字段以非零开头,它就可以正常工作。这是我的路由代码(在/nris/ 中加载):
@app.route('/numish/<regex("[0-9]{8}"):resourcenum>/')
def numish(resourcenum):
return "resourcenum: %s" % (resourcenum)
@app.route('/resource/<regex("[0-9]{8}"):resourcenum>/')
def resource_page(resourcenum):
return render_template('singlemap.html', propnris=resourcenum)
当我访问http://hostname/nris/numish/00000004时,我看到了
resourcenum: 00000004
但是当我在我的模板中显示它时,控制台上显示的都是 4,而在 addSingleSiteLayer() 中执行的数据库查询得到 4,而不是 00000004。这是我用来生成 JavaScript 的 Jinja 代码:
{% extends "maptemplate.html" %}
{% block mapcustom %}
console.log( "hello" );
console.log( {{propnris}} );
addSingleSiteLayer(map, {{propnris}} );
{% endblock %}
我可以简单地将传入的值重新格式化为带有前导零的 8 个字符串。但我宁愿将参数向下传递,以免它一开始就被截断。有没有干净的方法来做到这一点?
【问题讨论】: