前言
模块用途
模块 | 用途 |
---|---|
flask-sqlalchemy | 数据库 |
flask-wtf | 表单验证 |
flask-restful | restful api是用于在前端与后台进行通信的一套规范。使用这个规范可以让前后端开发变得更加轻松。 |
flask-mail | 邮箱 |
celery | 异步执行、定时任务 |
flask-login | 提供用户会话管理 |
flask-cache | 缓存 |
flask-pjax | 异步刷新页面 |
flask-restless | Flask-Restless为使用SQLAlchemy(或Flask-SQLAlchemy)定义的数据库模型提供简单的ReSTful API生成。生成的API以JSON格式发送和接收消息。 |
flask-redis | redis数据库 |
flask-session | 会话管理 |
flask-script | 通过命令行的形式来操作Flask |
flask-migrate | 一个为Flask应用处理SQLAlchemy数据库迁移的扩展,使得可以通过Flask的命令行接口或者Flask-Scripts对数据库进行操作 |
flask-caching | 缓存 |
Pycasbin | 比flask-login更强大的权限框架 |
flask-authz | 基于PyCasbin |
虚拟环境
安装
- 安装virtualenv
- 安装virtualenvwrapper
pip install virtualenv virtualenvwrapper
创建虚拟环境
mkvirtualenv 虚拟环境名称
切换某个虚拟环境
worken 虚拟环境名称
退出当前虚拟环境
deactivate
列出虚拟环境
lsvirtualenv
进入到虚拟环境所在的目录
cdvirtualenv
修改mkvirtualenv的默认路径
mkvirtualenv --python=python-path 名称
安装flask
pip install flask
检查flask版本
flask.__version__
URL(统一资源定位符)组成部分详解
一个url(统一资源定位符)由以下几部分组成:scheme://host:port/path?query-stringxxx#anchor
-
scheme:代表的是访问的协议,一般为https,http,ftp等
-
host:主机名,域名,比如www.baidu.com
-
port:端口号
-
path:查找路径
-
query-string:查询字符串
-
anchor:锚点,后台一般一般不用管,前端用来做页面定位的
演示
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World!'
if __name__ == '__main__':
app.run()
运行后:
从flask这个包中导入flask这个类,flask这个类是项目的核心,以后很多操作都是基于这个类的对象
注册url,注册蓝图都是基于这个类的对象
详解
创建一个flask对象,传递 **_name_**参数进去
app = Flask(__name__)
**_name_**参数的作用
-
可以规定规模和静态文件的查找路径。
-
以后一些flask插件,比如Flask-migrate,Flask-SQLAlchemy如果报错,那么flask可以通过这个参数找到具体的错误位置。
@app.route('/')
def hello_world():
return 'Hello World!'
@app.route 是一个装饰器,@app.route('/')就是将url中的/映射hello_world这个视图函数上面,以后访问网站的/目录的时候,会执行hello_world这个函数,然后将这个函数的返回值返回给浏览器。
debug模式详解
为什么需要开启debug模式:
-
如果开启了DEBUG模式,那么在代码中如果抛出了异常,在浏览器的页面中可以看到具体的错误信息,以及具体的错误代码位置,方便开发者调试
-
如果开启了debug模式,那么以后在python代码中修改了任何代码,只要按"ctrl+s",'flask'就会自动的重新记载整个网站,不需要手动点击重新运行。
配置debug模型的四种方式
-
在'app.run()'中传递一个参数'debug=True'就可以开启'DEBUG'模式
- app.run(debug=True)
-
给'app.debug=True'也可以开启'debug'模式
- app.debug = True
-
通过配置参数的形式设置DEBUG模式,'app.config.update(DEBUG=True)'
- app.config.update(DEBUG=True)
-
通过配置文件的形式设置DEBUG模式:'app.config.from_object(config)'
from flask import Flask
import config
app = Flask(__name__)
### 2.app.debug = True
### 3.app.config.update(DEBUG=True)
### 4.app.config.from_object(config)
@app.route('/')
def hello_world():
return 'Hello World!'
if __name__ == '__main__':
### 1.app.run(debug=True)
app.run()
PING码
如果想要在网页上调试代码,name应该输入'PIN'码
配置文件两种方式详解
使用"app.config.from_object(config)"的方式加载配置文件
from flask import Flask
import config
app = Flask(__name__)
app.config.from_object(config)
@app.route('/')
def hello_world():
return 'Hello World!'
if __name__ == '__main__':
app.run(debug=True)
使用“app.config.from_pyfile”的方式加载配置文件
from flask import Flask
import config
app = Flask(__name__)
app.config.from_pyfile("config.py")
# app.config.from_pyfile("config.txt",silent=False)
@app.route('/')
def hello_world():
return 'Hello World!'
if __name__ == '__main__':
app.run(debug=True)
其中app.config.from_pyfile("config.txt",silent=False),silent=False如果不存在,则会报错;silent=True,如果文件不存在,则不会报错