Flask中url详解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flask中url详解相关的知识,希望对你有一定的参考价值。

参考技术A 第一种:使用path的形式(将参数嵌入到路径中)。

第二种:使用查询字符串的方式,就是通过”?key=value“的形式传递的。

如果这个想要做SEO优化,就是被搜索引擎搜索到,那么推荐使用第一种形式(path的形式)。如果不在乎搜索引擎优化,那么可以使用第二种(查询字符串的形式)。

参数一是视图函数(例如上面的article_list),要反转的url就是视图函数所在路由url(/list/)

必须继承werkzeug.routing的BaseConverter

作用:这个方法的返回值,将会传递到view函数(posts)中作为参数。

作用:这个方法的返回值,将会调用url_for函数的时候生成符合要求的url形式。

修改app.run(host=0.0.0.0) 在其他电脑上输入1:端口号/路径

重定向分为永久性重定向和暂时性重定向,在页面上体现的操作就是浏览器会从一个页面跳转到另一个页面,比如用户访问一个需要权限的页面,但是用户没有登录,因此我们会给他重定向到登录页面。

‘http’的状态码是‘301’,多用于旧网址被废弃要转到一个新的网址确保用户的访问,
最经典的就是京东网站,输入 www.jingdong.com 的时候,会重定向到’ www.jd.com' ,因为jingdong已经被废弃,所以这种情况应该用永久重定向。

‘http’的状态码是‘302’,表示页面暂时性跳转,比如访问一个需要权限的网址,如果用户没有,应该重定向到登录界面,这种情况应该用暂时性重定向。

‘flask’中有一个函数叫做‘redirect’,可以重定向到指定的页面。

python web开发-flask中url带斜线/和不带斜线/的区别详解

flask中带斜线和不带斜线的url

通过flask进行路由配置的时候,有一个细节,就是同样的url,带上”/”和不带”/”有什么区别。

举例说明:

比如有个url,名字为”/url”

先同时定义两种url,一种带”/”,一种不带”/”,如下代码:

@app.route("/url")
def urlWithOut():
return "url with out /"


@app.route("/url/")
def urlWith():
return "url with /"

访问/url,效果如下:

技术分享图片

访问/url/效果如下:

技术分享图片

然后把/url这个定义注释掉,再次访问/url,发现会跳转到/url/这个地址上

如果把/url/这个定义注释掉,保留/url这个定义,再次访问/url/,发现报404错误

技术分享图片

结论,当带斜线和不还斜线的url同时存在时,两个url相互独立可以各自处理各自的逻辑。

当带斜线的url存在,不带斜线的url不存在时,带斜线的url和不带斜线的url可以同时访问不过返回的结果是同样的。

当带斜线的url不存在,不带斜线的url存在时,带斜线的url返回404,不带斜线的url可正常访问。

以上是关于Flask中url详解的主要内容,如果未能解决你的问题,请参考以下文章

Flask中url详解

Flask第一篇——URL详解

Flask Session 详解

Flask(URL)

Flask request 属性详解

Flask框架—session组件详解