赞
踩
目录
7.客户端传递参数的方法:构造动态路由和创建request对象
flask是一个小而精的轻量级微框架,只包含基本的配置,默认依赖于两个外部库(jinja2 wsgi),flask使用所有的工具都依赖导入的形式去扩展
特点:性能基本满足需求、灵活性和可拓展性强、对各种数据库的契合度都比较高、真实的开发环境下、小项目开发快、大项目设计灵活
django是一个大而全的框架,内置了许多的模块,能让开发者不用再开发之前就在选择应用基础设施上花费大量的时间,django有模板表单路由,基本的数据库管理等等内建功能,但是灵活度不够。
第一步:首先在本地缓存找是否有对应的域名解析过的ip,如果有就直接返回ip,如果没有就继续往下查找
第二步:在/etc/hosts文件里面找是否有对应的ip,如果有就返回ip,如果没有就继续往下寻找
第三步:如果设置了转发,所有在缓存中无法找到的域名查询都将转发到指定的DNS服务器上,有这台指定的DNS服务器来完成域名解析工作,而转发DNS将存贮查询到的信息到本地缓存中,在缓存生命周期内,如果有相同的域名再次查询就直接从本地缓存中获得数据
第四步:如果没有设置转发就会到根服务器(/etc/named.conf)(根服务器全球只有13台,速度会很慢,)去找,如果找不到就显示nut found
项目开发最好在虚拟环境里面开发,如果你同时要跑两个项目,但是这两个项目依赖的flask版本不相同,就会导致有一个项目跑不起来的问题,如果在虚拟环境里面开发,每个项目都有自己的虚拟环境(默认从base拷贝,可以修改),从而解决了版本问题
(最前面如果出现方框内的内容说明已经进入虚拟环境)
4.1 pycharm安装flask
(在终端输入)pip install flask1.1
(进入虚拟环境)acticate.bat
4.2 在linux里面安装flask
第一步:pip install flask
第二步:创建一个虚拟环境: python3 -m venv myvenv (我们的虚拟环境的文件名叫myvenv,可以自己设置别的名字,只是一个文件名而已)
第三步:进入虚拟环境 :cd /myvenv/bin source activate
5.1 创建一个flask项目--点击左上角file---点击newproject--点击flask--点击create
5.2在main.py里面启动一个flask项目
- # 导入flask模块
- from flask import Flask
-
- # 实例化一个flask项目,项目名为app
- app = Flask(__name__)
-
- # 启动项目
- app.run()
-
- # 右键+run 启动项目,但是可以看到我们现在的项目没有任何内容
5.3 绑定路由,提供页面信息
绑定路由有两种方法,一种是用装饰器绑定路由,一种是通过url_map和view_functions两张表来绑定路由
装饰器绑定路由:
- # 导入flask模块
- from flask import Flask
-
- # 实例化一个flask项目,项目名为app
- app = Flask(__name__)
-
- # 装饰器绑定路由
- @app.route("/")
- def login():
- print("hello login!")
- return "hello world !"
- # 我们的浏览器端会输出hello word!
- # 我们的终端会输出 hello login!
- # 启动项目
- app.run()
-
- # 右键+run 启动项目,但是可以看到我们现在的项目没有任何内容
通过两张表来绑定路由:在收到请求之后,先解析http头部字段,拿到请求url的路径,在url-map表中查找是否有这个路径,如果有这个路径就找到对应的endpoint,找到endpoint后就去view_function表中找到对应的function,(endpoint作为中间变量,解耦了url和function,修改url'或者修改function都不会影响到对方,endpoint是全局唯一的,默认以函数名作为endpoint)
点击展开app
查看url_,map和view_functions 表,现在我们还没有传入数据所以是空的
- # 导入flask模块
- from flask import Flask
-
- # 实例化一个flask项目,项目名为app
- app = Flask(__name__)
-
- # 绑定路由
- def root():
- return "this is root!"
- # 指定endpoint是root111
- # 指定获取信息的方法是GET 和POST
- app.add_url_rule("/",view_func=root, endpoint="root111", methods=["GET","POST"])
-
- # 启动项目
- app.run()
-
- # 右键+run 启动项目,但是可以看到我们现在的项目没有任何内容
6.1在linux中生成一个虚拟环境模块,source activate 进入虚拟环境
6.2在虚拟环境中安装flask
pip install flask
6.3在虚拟环境安装gunicorn(gunicorn是python在linux环境下的http服务器,用于解析http的相关请求服务)
pip install gunicorn
6.4 新建一个文件启动项目
6.5用gunicorn启动项目
开启四个进程来运行项目
可见我们的项目绑定的是本地回环地址的8000端口,用其他机器访问一下项目
返回hello world!
构造动态路由--通过url来传递参数
构造动态url很多时候使用在分页上
- from flask import Flask
-
- app = Flask(__name__)
-
- @app.route("/sctl/<name>/<int:age>")
- def sctl(name,age):
- return f"my name is {name}, my age is {age}"
-
- app.run()
可以在服务器端规定客户端需要传递什么类型的数据、
在这里我们要求第二个参数必须是int型的数据·
如果客户端传递参数不正确就会显示notfound
通过url_for逆向查找url
- from flask import Flask,url_for
- @app.route("/sctl/<name>/<int:age>")
- def sctl(name,age):
- # 通过endpoint逆向查找url
- print(url_for("index"))
- return f"my name is {name}, my age is {age}"
在客户端访问以后,在终端查询结果
request对象的常用属性:
1.url 记录请求的url地址
2.method 记录请求的http方法
3.args 记录请求中的查询参数 --常用在get方法中
4.form表单 记录i请求中的表单参数
5.json 记录请求中传递的json参数
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。