Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.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
Flask 为什么烧瓶要把%20变成%2520?_Flask_Html Encode - Fatal编程技术网

Flask 为什么烧瓶要把%20变成%2520?

Flask 为什么烧瓶要把%20变成%2520?,flask,html-encode,Flask,Html Encode,我创建了一个个人CMS项目,其中每个页面都存储在数据库中,包含以下列:title,url\u safe\u title,以及content 为了创建url\u safe\u标题,我在原始标题上使用了urllib.parse.quote()。因此,如果页面标题是“我的页面”,则url\u safe\u title将存储为“我的%20页面” 在模板上,我会使用url\u为('core.page',page\u name=page.url\u safe\u title)构建url,其中page\u n

我创建了一个个人CMS项目,其中每个页面都存储在数据库中,包含以下列:
title
url\u safe\u title
,以及
content

为了创建
url\u safe\u标题
,我在原始标题上使用了
urllib.parse.quote()
。因此,如果页面标题是“我的页面”,则
url\u safe\u title
将存储为“我的%20页面”

在模板上,我会使用
url\u为('core.page',page\u name=page.url\u safe\u title)
构建url,其中page\u name是视图函数中的预期变量

@core.route('/<string:page_name>')
def page(page_name):
  # find the relevant entry in db
  return render_template('template.html', page = page)
@core.route(“/”)
def页面(页面名称):
#在数据库中查找相关条目
返回呈现模板('template.html',page=page)
但是,生成的URL将变为“www.example.com/My%2520Page”,而不是预期的“www.example.com/My%20Page”。我检查了存储在数据库中的
url\u safe\u title
值,它是正确的值(“我的%20页”)

有趣的是,当我在本地托管此应用程序时,尝试查询具有
url\u safe\u title
作为“我的%20页”的页面时,“我的%2520页”起作用。然而,当我在网上主持它时,一切都崩溃了。不幸的是,该主机是一个有限的cPanel主机,无法访问终端,因此我无法了解操作系统是什么。我只知道python版本是3.7.8,我的本地python版本是3.7.4


在为('core.page',page_name=page.URL|u safe|title | safe)构建URL
URL|u时,我也尝试过使用
|safe
jinja过滤器,但这也没有帮助。我将page.url\u safe\u标题作为一个变量传递到其上,以显示在页面上,并显示“我的%20页”。

%2520
表示它被编码了两次。在存储到数据库之前,不应对其进行编码。这只是一根绳子。

谢谢!你知道为什么只有在在线托管时才会发生这种情况,而不是在本地运行应用程序时才会发生这种情况吗?我有没有办法让两者都表现得一样?在本地和生产中都应该表现得一样