Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在路由中保留前导零_Python_Regex_Flask_Jinja2 - Fatal编程技术网

Python 如何在路由中保留前导零

Python 如何在路由中保留前导零,python,regex,flask,jinja2,Python,Regex,Flask,Jinja2,我正在构建如下所示的URL,使用Flask进行路由: 最后一段是一个8位整数,它将匹配数据库中的字符串。前导零(如果有)是有效的 我已经实现了一个自定义正则表达式转换器,基于。只要数值字段以非零开头,这就可以正常工作。这是我的路线代码(加载在/nris/中): 但是,当我在模板中显示它时,控制台上显示的所有内容都是4,在addSingleSiteLayer()中执行的数据库查询得到的是4,而不是00000004。下面是我用来生成JavaScript的Jinja代码: {% extends "

我正在构建如下所示的URL,使用Flask进行路由:

最后一段是一个8位整数,它将匹配数据库中的字符串。前导零(如果有)是有效的

我已经实现了一个自定义正则表达式转换器,基于。只要数值字段以非零开头,这就可以正常工作。这是我的路线代码(加载在
/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>/')