Python 如何在路由中保留前导零
我正在构建如下所示的URL,使用Flask进行路由: 最后一段是一个8位整数,它将匹配数据库中的字符串。前导零(如果有)是有效的 我已经实现了一个自定义正则表达式转换器,基于。只要数值字段以非零开头,这就可以正常工作。这是我的路线代码(加载在Python 如何在路由中保留前导零,python,regex,flask,jinja2,Python,Regex,Flask,Jinja2,我正在构建如下所示的URL,使用Flask进行路由: 最后一段是一个8位整数,它将匹配数据库中的字符串。前导零(如果有)是有效的 我已经实现了一个自定义正则表达式转换器,基于。只要数值字段以非零开头,这就可以正常工作。这是我的路线代码(加载在/nris/中): 但是,当我在模板中显示它时,控制台上显示的所有内容都是4,在addSingleSiteLayer()中执行的数据库查询得到的是4,而不是00000004。下面是我用来生成JavaScript的Jinja代码: {% extends "
/nris/
中):
但是,当我在模板中显示它时,控制台上显示的所有内容都是4,在addSingleSiteLayer()
中执行的数据库查询得到的是4,而不是00000004。下面是我用来生成JavaScript的Jinja代码:
{% extends "maptemplate.html" %}
{% block mapcustom %}
console.log( "hello" );
console.log( {{propnris}} );
addSingleSiteLayer(map, {{propnris}} );
{% endblock %}
我可以简单地将输入值重新格式化为一个带前导零的8个字符的字符串。但是我宁愿向下传递参数,这样它就不会在第一时间被截断。有没有一种干净的方法可以做到这一点?您正在将值传递给JavaScript,而它忽略了您给它的整数文本的前导零。这绝不是Python或Flask的错 通过将值括在引号中使其成为字符串文字:
{%extends“maptemplate.html”%}
{%block mapcustom%}
console.log(“你好”);
log(“{propnris}”);
addSingleSiteLayer(映射“{{propnris}”);
{%endblock%}
或者更好的是,为您处理任何报价问题:
{%extends“maptemplate.html”%}
{%block mapcustom%}
console.log(“你好”);
log({propnris | tojson | safe}});
addSingleSiteLayer(映射,{{propnris | tojson | safe}});
{%endblock%}
由于Flask的
tojson
过滤器生成有效的JavaScript兼容JSON输出,因此可以直接将其解释为JavaScript文本,并正确引用Python字符串。顺便说一句,对于Flask中url路由的原始问题,您现在可以使用固定位数指定参数
e、 g
@app.route('/numish/'))
当您在代码中使用url_for()时,url将使用正确的位数构造
有关可用路由参数的更多详细信息,请参见:
resourcenum: 00000004
{% extends "maptemplate.html" %}
{% block mapcustom %}
console.log( "hello" );
console.log( {{propnris}} );
addSingleSiteLayer(map, {{propnris}} );
{% endblock %}
@app.route('/numish/<int(fixed_digits=8):resourcenum>/')