Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.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_Url_Flask - Fatal编程技术网

Python 如何使用'/';

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

在我的第一个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 'Hello World!'
    
    然后我可以转到
    127.0.0.1:5000/hello
    ,但浏览器会重定向到
    127.0.0.1:5000/hello/

  • 我将URL更改回
    /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具有用于执行类似行为的。