flask拆分为Django样式(一)
2020-07-14 06:32
579 查看
flask拆分为Django样式
环境变量路径 :
vim ~/.bashrc export FLASK_ENV='develop'
安装flask-script
1.添加配置manage = Manager(app=app) 2.改名 为manage.py 3.把启动程序改为manage.run() 示例:
from flask_script import Manager app = Flask(__name__) manage = Manager(app=app) @app.route('/') def hello_world(): return 'Hello World!' if __name__ == '__main__': manage.run(debug=True)
项目拆分成django目录
目录结构
创建没有的文件和文件夹
├── App
│ ├── init.py
│ ├── models.py
│ ├── static
│ ├── templates
│ └── views.py
├── manage.py
└── pycache
如果直接将manage.py 里的函数剪切进 views.py 并导入包这种方式会出现循环引用,解决方式
App/init.py :
from flask import Flask # 1.创建app from App.views import init_route def create_app(): app = Flask(__name__) # 2. 想将views导入,但是这里导入的话 ,views还是要导入app 因此采用函数调用的方式,这种方式也称为懒加载 init_route(app) return app
views.py 文件里
def init_route(app): @app.route('/') def hello_world(): return 'Hello World!'
manage.py 文件里:
from flask import Flask from flask_script import Manager from App import create_app app = create_app() manage = Manager(app=app) if __name__ == '__main__': manage.run()
此时就可以使用 python manage.py runserver 去运行了
进行路由管理的拆分
使用 flask-blueprint来解决
views.py 文件里
from flask import Blueprint blue = Blueprint('blue',__name__) @blue.route('/') def index(): return '我是蓝图的主页'
App/init.py :
from flask import Flask # 1.创建app from App.views import blue def create_app(): app = Flask(__name__) # 2. register_blueprint app.register_blueprint(blue) return app
views 变身
将views转换为包,在 views/_init.py文件里
from .first_blue import blue def init_view(app): app.register_blueprint(blue)
创建first_blue (这些操作都是为了解耦)
from flask import Blueprint blue = Blueprint('blue',__name__) @blue.route('/') def index(): return '我是蓝图的主页'
APP/init.py加入
init_view(app)
数据库ORM改装
安装FLASK-SQLALCHEMY
新建models.py
from flask_sqlalchemy import SQLAlchemy db = SQLAlchemy() def init_model(app): db.init_app(app) class User(db.Model): id = db.Column(db.Integer,primary_key=True) username = db.Column(db.String(16))
在App/init.py里添加
from flask import Flask # from flask_sqlalchemy import SQLAlchemy from App.models import init_model from App.views import init_view def create_app(): app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = "mysql+pymysql://root:123456@localhost:3306/testflask" app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False init_model(app) init_view(app) return app
first_blue 文件里
@blue.route('/createdb/') def creaetdb(): db.create_all() return '创建成功'
然后在 浏览器里访问便可创建
二次拆分
相关文章推荐
- Django初学者笔记系列(十): 使用jumbotron设置主页的样式
- 我为什么不用Django而用Flask?
- Celery+django_celery+flask_celery+rabbitmq+flower+
- <转>将Django models 和views拆分程多个文件
- Python高效开发实战——Django、Tornado、Flask、Twisted
- Django和Flask对于URL尾斜杠(back slash)的处理
- 5 JInja2模版(适用于Django和Flask)
- Flask和Django框架中自定义模型类的表名、父类相关问题分析
- 两张图看懂Django和Flask的区别
- Django models 拆分
- Django初学者笔记系列(九):设置项目的样式
- Django templates 和 urls 拆分
- Apache下部署Django 的样式问题
- Python高效开发实战(web)——Django、Tornado、Flask、Twisted
- django-pagination 样式修改
- Django开发个人博客项目-(9)实现标签云样式和标签下所有文章展示
- Django中Admin样式定制
- 关于Django 中启动自带服务器进入后台admin没有样式的问题...
- 有没有已经工作的Python大神,麻烦给点指导。非常感谢,可以说一些工作中常用的技术框架,比如(web框架Django,Flask,爬虫,数据分析类工作)
- Python web后端开发框架 Django 、Flask、Tornado