学习笔记-第4天-flask-2-官方教程-教程(章节)

这篇教程介绍了如何使用Flask构建一个包含应用工厂、数据库操作和蓝图的博客项目。通过应用工厂函数管理配置,SQLite进行数据库操作,创建用户认证和博客功能。涉及内容包括初始化数据库、蓝图的使用、模板布局、静态文件以及登录权限控制。
摘要由CSDN通过智能技术生成

这个教程完成了一个更丰富的项目-博客!

包含的知识点有: 应用工厂函数、蓝图、数据库的使用等

一、应用工厂函数

说的简单易懂点,就是小项目我们直接在app.py中定义实例: app = Flask(__name__),

但在大应用中,这样就显得比较散乱。则,首先用一个包来管理主要代码。

 在python包的__init__.py中定义函数 create_app,用来装配和应用相关的所有配置,并返回实例。


import os
from flask import Flask

# 应用工厂函数,用来装配和应用相关的所有配置、注册和其他设置
def create_app(test_config=None):
    app = Flask(__name__, instance_relative_config=True) # 创建flask实例
    app.config.from_mapping(
        SECRET_KEY='DEV',
        DATABASE=os.path.join(app.instance_path, 'flaskr.sqlite')
    )

    # test_config如果存在,就会替换9-12行的配置,实现测试和开发的配置分离,相互分离
    if test_config is None:
        app.config.from_pyfile('config.py', silent=True)
    else:
        app.config.from_mapping(test_config)

    # 确保实例文件夹存在
    # 这里会创建一个instance文件夹,SQLite数据库文件会保存在里面
    try:
        os.makedirs(app.instance_path)
    except OSError:
        pass

    # 一个简单的路由
    @app.route('/hello')
    def hello():
        return 'hello, world'

    # 在工厂中导入并调用数据库相关的内容
    from . import db
    db.init_app(app)


    # 注册蓝图:第二步:在工厂函数中注册蓝图    在后面会用到。
    from . import auth
    app.register_blueprint(auth.bp)

    from . import blog
    app.register_blueprint(blog.bp)
    app.add_url_rule('/', endpoint='index') # 将项目端点名称index 和 / 相关联

    return app

二、数据库的操作

相较于第一个快速上手,这篇教程多了个数据库操作相关介绍。此处用SQLite.

1、准备好数据库建表语句

flaskr/schema.sql

DROP TABLE IF EXISTS user;
DROP TABLE IF EXISTS post;

CREATE TABLE user (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  username TEXT UNIQUE NOT NULL,
  password TEXT NOT NULL
);

CREATE TABLE post (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  author_id INTEGER NOT NULL,
  created TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  title TEXT NOT NULL,
  body TEXT NOT NULL,
  FOREIGN KEY (author_id) REFERENCES user (id)
);

2、写一个命令 flask init,执行上面的见表语句

import sqlite3
import click
from
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值