flask基础01
Flask基础
Python版本管理器(pyenv)
安装pyenv
1: sudo apt-get install curl git 2: sudo curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash 3: 将提示的三行代码复制 # 会出现提示的三行代码,格式如下 eg: export PATH="/root/.pyenv/bin:$PATH" eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)" 4: sudo vim ~/.bashrc 5: 追加刚才复制的三行代码至最后 eg: export PATH="/root/.pyenv/bin:$PATH" eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)" 6: sudo source ~/.bashrc 7: sudo echo $PATH # 如果出现 .pyenv/shims 说明成功 8: pyenv update # 更新
卸载pyenv
1: sudo rm -fr ~/.pyenv 2: 同时删除 .bashrc 下面这些内容 export PATH="~/.pyenv/bin:$PATH" eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)"
安装python
1:安装依赖 sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm sudo apt-get install libc6-dev gcc-5 2:cd ~/.pyenv 3: mkdir -p cache 4: 将下载的 python包 放到cache下 5: pyenv install 3.6.4 -v 6: pyenv rehash # 更新pyenv库
Python管理
1:列出pyenv已经安装的python版本 pyenv versions 2: python版本切换 pyenv global 3.6.4 3:卸载python pyenv uninstall 3.6.4
虚拟环境管理
第一种
1:Python自带环境创建 # 创建环境 python -m venv <envname> # 激活环境 source ....pathon<envname>/bin/activate # 环境的路径 # 退出环境 deactivate
第二种
1: pip install virtualenvwrapper 2: sudovim ~/.bashrc 3: 最后一行加入 # 注意修改主机名,和python版本 if [ -f /home/dq/.pyenv/versions/3.6.4/bin/virtualenvwrapper.sh ]; then export WORKON_HOME=$HOME/.virtualenvs export VIRTUALENVWRAPPER_PYTHON=/home/dq/.pyenv/versions/3.6.4/bin/python export VIRTUALENVWRAPPER_VIRTUALENV=/home/dq/.pyenv/versions/3.6.4/bin/virtualenv source /home/dq/.pyenv/versions/3.6.4/bin/virtualenvwrapper.sh fi 4:source ~/.bashrc # 配置文件生效 5: 基本使用: # 创建环境 mkvirtualenv <envname> # 激活环境 workon <envname> # 退出环境 deactivate # 列出所有的虚拟环境 lsvirtualenv # 删除虚拟环境 rmvirtualenv <envname> # 虚拟环境存放位置 ~/.virtualenvs/
第三种
1: pip install virtualenv 2: mkdir -p /data/blog 3: cd /data/blog/ 4: 基本使用 # 创建环境 pyenv virtualenv <envname> # 激活环境 pyenv activate <envname> # 退出环境 pyenv deactivate <envname> # 虚拟存放位置 ~/.pyenv/versions/
第四种
1:pycharm编辑器自带创建虚拟环境功能
Flask依赖包
安装flask
pip install flask
包名 | 作用 |
---|---|
Werkzeug | 用于实现 WSGI ,应用和服务之间的标准 Python 接口 |
Jinja | 用于渲染页面的模板语言 |
MarkupSafe | 与 Jinja 共用,在渲染页面时用于避免不可信的输入,防止注入攻击 |
ItsDangerous | 保证数据完整性的安全标志数据,用于保护 Flask 的 session cookie |
Click | 是一个命令行应用的框架。用于提供 flask 命令,并允许添加自定义 管理命令 |
创建第一个Flask应用
文件内容
from flask import Flask # 导入Flask类 app = Flask(__name__) # 创建Flask类的实例 @app.route('/') # 使用 route() 装饰器来告诉 Flask 触发函数的 URL def hello_world(): # 函数名称被用于生成相关联的 URL 。函数最后返回需要在用户浏览器中显示的信息 return 'Hello, World!'
项目启动
1:手动启动: 1:终端里导出 FLASK_APP 环境变量: export FLASK_APP=app.py 2:启动项目: flask run 3:浏览器访问 127.0.0.0:5000 2:pycharm中启动: python app.py runserver # 文件内容中要有以下代码: if __name__ == '__main__': app.run() -p # 端口号 -h # 主机名 -r # 修改代码重载 -d # 调试模式
路由
1:变量规则: # 关键字参数 @app.route('/user/<username>') def show_user_profile(username): return 'User %s' % username 127.0.0.1:5000/user/cross # 关键字加限定类型 @app.route('/post/<int:post_id>') def show_post(post_id): return 'Post %d' % post_id 2: 参数类型: 1:string # 接受任何不包含斜杠的文本 2: int # 接受正整数 3: float # 接受正浮点数 4: path # 类似 string ,但可以包含斜杠 5: uuid # 接受 UUID 字符串 3:唯一url和重定向行为: 1:@app.route('/projects/') 2:@app.route('/about') # 如果浏览器访问资源路径后面一个斜杠不加的话,1路由请求不会报错,flask会自动重定向帮你加上斜杠,2:路由也不会报错 # 如果浏览器访问资源路径后面添加上一个斜杠的话2路由会报404错误
HTTP方法
1:route装饰器中如果不声明请求方法默认是GET方法 # 如果想要使用post方法,需要声明 methods=['POST'] 2:eg: from flask import request @app.route('/login', methods=['GET', 'POST']) def login(): if request.method == 'POST': return do_the_login() else: return show_the_login_form()
Flask第一次封装
项目结构
├── App # 项目应用 │ ├── __init__.py # 初始化文件 │ ├── models.py # 模型 创建数据库模型 orm对象关系映射 │ ├── static # 静态资源 css js img 等等 │ ├── templates # 模板,动态资源,html │ └── views.py # 路由 试图函数 ├── app.py # 整个项目文件,项目入口
命令行管理项目(manager.py)
1:pip install flask-script 2: 基本使用 from flask import Flask from flask_script import Manager app = Flask(__name__) manager = Manager(app=app) @app.route('/') def hello_world(): return 'Hello World!' if __name__ == '__main__': manager.run() 3:修改项目入口文件为manager.py 4: 测试: python manager.py runserver
初始化Flask类(__init__.py)
1:init文件封装函数实例化Flask类 from flask import Flask def create_app(): app = Flask(__name__) return app 2:manager.py 导入函数实例化类 from flask_script import Manager from App import create_app app = create_app() ..................
蓝图管理路由(views.py)
1: 蓝图(blutprint): 1:好处: Flask蓝图提供了模块化管理程序路由的功能,使程序结构清晰、简单易懂,项目模块化,方便管理 2:安装: pip install flask-blueprint 3: 蓝图使用 1:实例化蓝图 from flask import Blueprint blue = Blueprint('first', __name__) # first为蓝图名字,多为反向解析时使用 2:装饰函数 @blue.route('/') def hello_world(): return 'Hello World!' 3:注册蓝图(manager.py) from App.views import blue app.register_blueprint(blue) 或者 app.register_blueprint(blueprint=blue)
request
方法 | 返回值 | eg: |
---|---|---|
request.method | 返回请求方法 | GET/POST |
request.base_url | 去掉get参数的url | http://127.0.0.1:5000/testrequest/ |
request.host_url | 只有主机和端口号的url | http://127.0.0.1:5000/ |
request.url | 完整的请求地址 | http://127.0.0.1:5000/testrequest/ |
request.mote_addr | 请求的客服端地址 | 127.0.0.1 |
request.args.get('参数') | GET请求获取参数 | cross |
request.form.get('参数') | POST请求获取参数 | cross |
request.files | 文件上传 | 。。。。 |
request.headers | 请求头 | 。。。。 |
request.path | 路由中的路径 | 。。。。 |
request.cookies | 请求中的cookie | 。。。。 |
session | 与request类似 也是一个内置对象 可以直接打印 print(session) | 。。。。 |
request.form['参数'] | POST请求获取参数 | cross |
request.args['参数'] | GET请求获取参数 | cross |
response
返回类型
1:string # 字符串 @blue.route('/testresponse/') def testresponse(): return '过去从未消亡,它甚至从未过去'
2:reder_template # 模板渲染 @blue.route('/testresponse1/') def testresponse1(): return render_template('/index.html/')
3:make_response @blue.route('/testresponse2/') def testresponse2(): res = make_response('<h3>过去从未消亡,它甚至从未过去</h3>') print(type(res)) return res
4:redirect # 重定向 @blue.route('/testresponse3/') def testresponse3(): res = redirect(url_for('first.testresponse1')) print(type(res)) return res
5:Response @blue.route('/testresponse4/') def testresponse4(): name = request.args.get('name') res = Response('你真的认识我吗?%s' % name) return res
会话技术
相关推荐
liusarazhang 2020-05-30
chenhy 2020-05-25
zooozx 2020-05-19
Charliewolf 2020-05-01
zfyaixue 2020-04-14
sunny0 2020-03-03
yogoma 2020-03-01
明天你好 2020-02-20
ZeroKing 2020-02-09
MAC2007 2020-02-03
adc00 2020-01-24
阿艾辣悟叩德 2020-01-19
学习备忘录 2019-12-27
猛禽的编程艺术 2019-12-21
CloudXli 2019-12-20
Winterto0 2019-12-14
小方哥哥 2019-11-18
huang00 2019-11-11