Python 如何使用'/';
在我的第一个Flask应用程序中,我正在试验以斜杠结尾的URL,而不是以斜杠结尾的URL,我看到了一些意想不到的浏览器行为Python 如何使用'/';,python,url,flask,Python,Url,Flask,在我的第一个Flask应用程序中,我正在试验以斜杠结尾的URL,而不是以斜杠结尾的URL,我看到了一些意想不到的浏览器行为 我的查看功能如下所示: @app.route('/hello') def hello_world(): return 'Hello World!' 然后我可以转到127.0.0.1:5000/hello并查看“hello World” 我将URL更改为: @app.route('/hello/') def hello_world(): return 'He
@app.route('/hello')
def hello_world():
return 'Hello World!'
然后我可以转到127.0.0.1:5000/hello
并查看“hello World”@app.route('/hello/')
def hello_world():
return 'Hello World!'
然后我可以转到127.0.0.1:5000/hello
,但浏览器会重定向到127.0.0.1:5000/hello/
/hello
:
@app.route('/hello')
def hello_world():
return 'Hello World!'
/hello
或/hello/
。当我访问127.0.0.1:5000/hello
时,浏览器仍然会重定向到127.0.0.1:5000/hello/
,响应为404。我不能看到任何东西,除非我回滚到步骤2
发生了什么事?引用a(稍加修改):
唯一URL/重定向行为
虽然[您的规则]看起来很相似,但它们在URL定义中使用的尾随斜杠不同。在[your step#2]中,[hello_world]端点的规范URL后面有一个斜杠。从这个意义上讲,它类似于文件系统上的文件夹。不带尾随斜杠访问它将导致Flask重定向到带尾随斜杠的规范URL
这意味着步骤2中的Flask将使用。这是一个永久重定向,大多数浏览器都会缓存它。这就是为什么,即使您更改了代码(在步骤3中),浏览器仍然会请求/hello/
,即使您请求/hello
(因为当它在步骤2中这样做时,Flask告诉它/hello
已移动到/hello/
)
在这种情况下,最简单的解决方案是清除浏览器的缓存——这会删除重定向的“内存”,然后一切就会恢复正常
就我个人而言,我使用
/directory/
样式的URL来表示预期包含其他资源的资源,使用/leaf
来表示没有其他子资源的资源。flask输出的确切错误是什么?flask可能执行了301(永久重定向),由浏览器缓存。您能否将响应的状态代码跟踪到127.0.0.1:5000/hello?是的,没有错误,浏览器只能查看404页。可以应用到Django?如url(r'^grid/$,…)、url(r'^grid/leaf/,…)、
建议更改为url(r'^grid/$,…)、url(r'^grid/leaf',…)、
?是,Django具有用于执行类似行为的。