url是统一资源定位符(Uniform Resource Locator的简写),对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。
scheme://host:port/path/?parameter=xxx#anchor https://www.baidu.com/Public/linux/?fr=aladdin#23
顾名思义统一资源定位符,是用来做定位用的,我们的web开发无非是要调用程序,而调用的具体程序我们称之为python的视图函数,URL建立了与Python视图函数一一对应的映射关系,通俗易懂可以理解为一条命令触发了一个python的函数或类。
在Flask程序中使用路由我们称之为注册路由,是使用程序实例提供的app.route()装饰器注册路由,而括号内的字符串就是url,注册路由的过程就是完成了 url和python类或函数映射的过程,可以理解为会有一张表保存了url与python类或函数的对应关系。这样我们以url访问flask就可以找到对应的程序
@app.route(‘/‘) def hello_world(): return ‘Hello World!‘
例如,你想根据学生的id找到具体的学生,http://127.0.0.1:5000/student_list/<student_id>/ 仍然在path部分 ,但是你没必要写多个路由,我们Flask支持这种可变的路由。
@app.route(‘/student_list/<student_id>/‘) def student_list(student_id): return ‘学生{}号的信息‘.format(student_id)
可以对参数限定数据类型,比如上面的文章详情,限定student_id必须为整数类型
@app.route(‘/student_list/<int:student_id>/‘) def article_detail(student_id): return ‘学生{}号的信息‘.format(student_id)
主要有这几种类型过滤:
string
: 默认的数据类型,接收没有任何斜杠" /"的字符串
int
: 整型
float
: 浮点型
path
: 和string类型相似,但是接受斜杠,如:可以接受参数/aa/bb/cc/多条放在一起
uuid
: 只接受uuid格式的字符串字符串,
我们在访问一个网址的时候在调用flask项目的时候需要调用的是一段具体的代码,也就是一个python类或者python函数,在这里这个python类我们称之为视图类,python函数我们称之为视图函数。
如果我们在视图函数中想使用一个url,比如给前端返回,或者我们在这个视图函数中返回一个模板文件都会使用到url,url相当于一把钥匙可以开启一些资源。如果你修改了注册路由编写的url规则,相当于修改了钥匙。那么其他的视图函数依旧是使用了原来的钥匙就无效了,如果项目是一个大项目,你一点点手动的去改涉及到的的url就不合理了。url_for()就是用来解决这个问题的。
利用视图函数名字一般不会改变的特性,利用视图函数的名字
去动态精准的获取url,以便于开发使用。
url_for(‘视图函数名字‘) # 输出该视图函数url
from flask import Flask,url_for app = Flask(__name__) app.config.update(DEBUG=True) @app.route(‘/‘,endpoint="sb") def index(): real_url=url_for("sb") return real_url if __name__ == ‘__main__‘: app.run()
原文:https://www.cnblogs.com/SR-Program/p/11838789.html