# FlaskStudy
**Repository Path**: feng7309/flask-study
## Basic Information
- **Project Name**: FlaskStudy
- **Description**: 学习flask之后的实现内容
- **Primary Language**: Python
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2022-07-26
- **Last Updated**: 2022-07-28
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# FlaskStudy
#### 介绍
学习flask之后对自己制定的项目结构,用于参考
#### 项目架构

apps 里面每个蓝图一个文件夹,单独存放
--users 自定义蓝图存放的位置
static 存放静态资源文件
tempalte 存放静态模板文件
migrations 数据库迁移的时候自动创建(不用管它)
.gitignore git创建的忽略文件不用管它
app.py 系统配置文件
configs.py 配置信息存放的地方
ext.py 数据库连接的生成的db对象存放的的地方
manage.py 程序口位置,用于程序的启动
models.py 数据库模型对象存放的位置
requirement.txt 需要安装的包统一存放的抢位置
#### 文件及配置
1. uers/users.py
```
from flask import Blueprint, render_template
user_bp = Blueprint('user_bp', __name__, url_prefix='/user')
@user_bp.route('/index')
def user_index():
# 换回的是模板文件可以按需修改
return render_template('base/base_index.html')
```
2. 模板文件引用
```
```
3. app.py 系统级的配置文件
```
from flask import Flask
from flask_cache import Cache
from flask_mail import Mail
import configs
from apps.users.users import user_bp
from ext import db
# 缓存初始化
cache = Cache()
# 邮箱初始化
mail =Mail()
app = Flask(__name__, static_url_path='/static', static_folder='static', template_folder='templates')
# 加载配置文件
app.config.from_object(configs)
# db、cache、mail绑定app
cache.init_app(app)
db.init_app(app)
mail.init_app(app)
# 注册
app.register_blueprint(user_bp)
```
4.configs.py 配置文件
```
# 创建数据库的连接对象
HOST = '127.0.0.1'
PORT = '3306'
DATABASE = 'flaskdb'
USERNAME = 'root'
PASSWORD = 'root'
DB_URI = "mysql://{}:{}@{}:{}/{}?charset=utf8".format(USERNAME, PASSWORD, HOST, PORT, DATABASE)
SQLALCHEMY_DATABASE_URI = DB_URI
SQLALCHEMY_TRACK_MODIFICATIONS = False
SQLALCHEMY_ECHO = True
# 配置email等信息
MAIL_SERVER = 'smtp.qq.com'
MAIL_PORT = 465
MAIL_USE_TLS = False
MAIL_USE_SSL = True
MAIL_DEBUG = True
MAIL_USERNAME = '邮箱地址'
MAIL_PASSWORD = '秘钥'
MAIL_DEFAULT_SENDER = '自己的邮箱地址'
# 配置redis
CACHE_TYPE = 'redis',
CACHE_REDIS_HOST = '127.0.0.1',
CACHE_REDIS_PORT = 6379,
CACHE_REDIS_DB = '数据库名称',
CACHE_REDIS_PASSWORD = '密码'
```
5.ext.py 数据库连接对象
```
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
```
6.manage.py 系统入口文件
```
# 文档配置路径
from flask_script import Manager, Server
from app import app
from flask_migrate import Migrate, MigrateCommand
from ext import db
import models
manager = Manager(app)
Migrate(app=app, db=db)
manager.add_command('db', MigrateCommand)
manager.add_command('start', Server(port=3001, use_debugger=True, host='0.0.0.0'))
'''
# 数据库命令
python manage.py db init 初始化数据库
python manage.py db migrate 创建数据库的迁移文件
python manage.py db upgrade 执行数据的迁移文件
# 其他命令
db 数据库迁移操作
start 在manage里面配置 parameters:参数配置为start
shell Runs a Python shell inside Flask application context.
runserver 生产环境使用该命令
'''
if __name__ == '__main__':
manager.run()
```
7.数据模型文件
```
# 创建数据库对象
from ext import db
"""
以下表关系:
一个用户对应多篇文章(一对多)
一篇文章对应多个标签,一个标签对应多个文章(多对多)
"""
"""
一对一关系中,需要设置relationship中的uselist=Flase,其他数据库操作一样。
一对多关系中,外键设置在多的一方中,关系(relationship)可设置在任意一方。
多对多关系中,需建立关系表,设置 secondary=关系表
"""
。。。。。
```
#### 使用命令和安装
1. 安装第三方包 pip install -r requirements.txt
2. 数据库命令,在项目目录下终端使用
python manage.py db init 初始化数据库
python manage.py db migrate 创建数据库的迁移文件
python manage.py db upgrade 执行数据的迁移文件
3. 程序启动命令
在pycharm中配置参数 start就可以快捷启动了
#### 后续,待更新
1. flask扩展 [https://www.bookstack.cn/read/flask-extension-docs/spilt.9.2df68a0f731b30e9.md](http://)
2. 新建 Feat_xxx 分支
3. 提交代码
4. 新建 Pull Request 1111 11111
#### 特技
1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md
2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com)
3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目
4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目
5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help)
6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)