【Python-flask】Python-flask学习大全-001-windows下创建一个flask项目
【Python-flask】Python-flask学习大全
一、创建一个flask应用项目
在windows下的本地目录E:\learn\flask_projects下创建一个名为flask-tutorial的项目文件夹
1.1、打开文件夹
1.2、地址栏直接输入cmd,回车
1.3、创建文件夹:mkdir flask-tutorial
mkdir flask-tutorial
1.4、进入目录:cd flask-tutorial
1.5、创建虚拟环境:py -3 -m venv .venv
设置一个 Python 虚拟环境,然后为项目安装 Flask 。
前提是需要安装了python3,这里不再赘述了。
py -3 -m venv .venv
1.6、激活虚拟环境:.venv\Scripts\activate
然后为项目安装 Flask
激活虚拟环境
.venv\Scripts\activate
1.7、安装 Flask:pip install -i https://mirrors.aliyun.com/pypi/simple/ flask
pip install -i https://mirrors.aliyun.com/pypi/simple/ flask
1.8、更新pip:python -m pip install –upgrade pip -i https://mirrors.aliyun.com/pypi/simple/
python -m pip install --upgrade pip -i https://mirrors.aliyun.com/pypi/simple/
1.9、查看已安装的python插件:pip list
二、项目布局
/flask-tutorial
├── flaskr/
│ ├── __init__.py
│ ├── db.py
│ ├── schema.sql
│ ├── auth.py
│ ├── blog.py
│ ├── templates/
│ │ ├── base.html
│ │ ├── auth/
│ │ │ ├── login.html
│ │ │ └── register.html
│ │ └── blog/
│ │ ├── create.html
│ │ ├── index.html
│ │ └── update.html
│ └── static/
│ └── style.css
├── tests/
│ ├── conftest.py
│ ├── data.sql
│ ├── test_factory.py
│ ├── test_db.py
│ ├── test_auth.py
├── .venv/
├── pyproject.toml
└── MANIFEST.in
三、应用设置
一个 Flask 应用是一个 Flask 类的实例。应用的所有东西(例如配 置和 URL )都会和这个实例一起注册。
创建一个 Flask 应用最粗暴直接的方法是在代码的最开始创建一个全局 Flask 实例。前面的 “Hello, World!” 示例就是这样做的。有的情 况下这样做是简单和有效的,但是当项目越来越大的时候就会有些力不从心了。
可以在一个函数内部创建 Flask 实例来代替创建全局实例。这个函 数被称为 应用工厂 。所有应用相关的配置、注册和其他设置都会在函数 内部完成,然后返回这个应用。
3.1、应用工厂
创建 flaskr 文件夹并且文件夹内添加 __init__.py
文件。 __init__.py
有两个作用:一是包含应用工厂; 二是告诉 Python flaskr 文件夹应当视作为一个包。
mkdir flaskr
__init__.py
import os
from flask import Flask
def create_app(test_config=None):
# create and configure the app
app = Flask(__name__, instance_relative_config=True)
app.config.from_mapping(
SECRET_KEY='dev',
DATABASE=os.path.join(app.instance_path, 'flaskr.sqlite'),
)
if test_config is None:
# load the instance config, if it exists, when not testing
app.config.from_pyfile('config.py', silent=True)
else:
# load the test config if passed in
app.config.from_mapping(test_config)
# ensure the instance folder exists
try:
os.makedirs(app.instance_path)
except OSError:
pass
# a simple page that says hello
@app.route('/hello')
def hello():
return 'Hello, World!'
return app
3.2、运行应用
flask --app flaskr run --debug
四、定义和操作数据库
应用使用一个 SQLite 数据库来储存用户和博客内容。 Python 内置了 SQLite 数据库支持,相应的模块为 sqlite3 。
使用 SQLite 的便利性在于不需要单独配置一个数据库服务器,并且 Python 提供了内置支持。但是当并发请求同时要写入时,会比较慢一点,因为每个写 操作是按顺序进行的。小应用没有问题,但是大应用可能就需要考虑换成别的 数据库了。
本教程不会详细讨论 SQL 。如果你不是很熟悉 SQL ,请先阅读 SQLite 文档 中的 相关内容 。
连接数据库
当使用 SQLite 数据库(包括其他多数数据库的 Python 库)时,第一件事就 是创建一个数据库的连接。所有查询和操作都要通过该连接来执行,完事后该 连接关闭。
在网络应用中连接往往与请求绑定。在处理请求的某个时刻,连接被创建。在 发送响应之前连接被关闭。
flaskr/db.py
import sqlite3
import click
from flask import current_app, g
def get_db():
if 'db' not in g:
g.db = sqlite3.connect(
current_app.config['DATABASE'],
detect_types=sqlite3.PARSE_DECLTYPES
)
g.db.row_factory = sqlite3.Row
return g.db
def close_db(e=None):
db = g.pop('db', None)
if db is not None:
db.close()
作者:Tzq@2018