在各种浏览器上测试基于Flask的网络应用时,我发现Chrome浏览器在我的一条路由和仅一条路由之后附加了“ /”。此行为导致页面未找到错误,因为我的路线是这样的:
/dictionary
但是Chrome渲染是这样的:
/dictionary/
根据烧瓶的不同而不同。
这是我的/词典路线和方法:
@app.route("/dictionary", methods=["GET", "POST"])
def dictionary():
results = []
if request.method == 'POST':
word = request.form.get("word")
# do stuff here
return render_template("results", results=results)
return render_template("dictionary.html")
我的html网址:
<a href="{{url_for(dictionary)}}"> </a>
它会生成以下预期网址:
<a href="/dictionary"></a>
请注意,这种奇怪的行为仅在Chrome浏览器中可以看到。它在Opera,Firefox和EI上运行良好。更奇怪的是,它仅在这一条路线上。具有类似方法和网址构建的其他路由正常。 N.B:我可以将路线更改为“ / dictionary /”,这样它可以工作,但是我希望保留“ / url_example”这样的路线。先感谢您。
答案 0 :(得分:1)
“ /”字符是正斜杠。也就是说,strict_slashes
(如果已设置,则要求URL带有斜杠,否则要求URL不带斜杠),默认情况下已启用,导致此问题。
您可以通过以下操作在整个应用中禁用严格的斜杠:
app = Flask(__name__)
app.url_map.strict_slashes = False
您可以从以下答案中了解更多信息:https://stackoverflow.com/a/33285603