【Python-flask】Python-flask学习大全-001-windows下创建一个flask项目

【Python-flask】Python-flask学习大全

  • 一、创建一个flask应用项目
  • 1.1、打开文件夹
  • 1.2、地址栏直接输入cmd,回车
  • 1.3、创建文件夹:mkdir flask-tutorial
  • 1.4、进入目录:cd flask-tutorial
  • 1.5、创建虚拟环境:py -3 -m venv .venv
  • 1.6、激活虚拟环境:.venv\Scripts\activate
  • 1.7、安装 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/
  • 1.9、查看已安装的python插件:pip list
  • 二、项目布局
  • 三、应用设置
  • 3.1、应用工厂
  • 3.2、运行应用
  • 四、定义和操作数据库

  • 一、创建一个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

    物联沃分享整理
    物联沃-IOTWORD物联网 » 【Python-flask】Python-flask学习大全-001-windows下创建一个flask项目

    发表回复