Flask开启一个新项目:
- 简单页面的显示
- 真实项目的创建
1.manage.py控制台
2.config.py配置文件
3.extensions.py扩展文件
4.app的init.py文件
5.views的main.py蓝图文件
6.views的init.py蓝图文件
文件目录结构:
简单的页面显示:
# 导入类库
from flask import Flask
# 创建应用实例
app = Flask(__name__)
# 添加视图函数
@app.route('/')
def index():
return '<h1>Hello Flask!</h1>'
# 运行实例
if __name__ == '__main__':
app.run()
真实项目的创建:
关于flask-script:
flask-script就是一个flask终端运行的解析器;可以做到开发测试完毕后,不修改任何代码就可以完成项目的部署,是通过传递不同的启动参数完成的。
1.manage.py
控制台文件,用于运行整个应用程序的入口。运行的命令是在cmd中输入以下代码:
python manage.py runserver
import os
from flask_script import Manager
from flask_migrate import MigrateCommand
from app import create_app
# 调用工厂方法创建应用实例
config_name = os.environ.get('FLASK_CONFIG') or 'default'
app = create_app(config_name=config_name)
manager = Manager(app)
manager.add_command('db', MigrateCommand)
if __name__ == '__main__':
manager.run()
2.config.py:
配置文件,里面存放各种类库所需要的配置信息,使用时只需要从该文件中导入到相关文件中。
import os
#获得当前文件所在的文件夹目录
base_dir = os.path.abspath(os.path.dirname(__file__))
#
class Config:
#秘钥设置
SECRET_KEY = '123456'
#数据库设置
SQLALCHEMY_COMMIT_ON_TEARDOWN = True
SQLALCHEMY_TRACK_MODIFICATIONS = False
#邮件发送设置
MAIL_SERVER = os.environ.get('MAIL_SERVER')
MAIL_USERNAME = os.environ.get('MAIL_USERNAME')
MAIL_PASSWORD = os.environ.get('MAIL_PASSWORD')
#自动加载模板
TEMPLATES_AUTO_RELOAD = True
#文件上传设置
MAX_CONTENT_LENGTH = 8*1024*1024
UPLOADED_PHOTOS_DEST = os.path.join(base_dir, 'static/upload')
# 初始化函数,完成特定环境的初始化操作
@staticmethod
def init_app(app):
pass
# 开发环境配置
class DevelopmentConfig(Config):
SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(base_dir, 'blog-dev.sqlite')
# 配置字典
config = {
'default':DevelopmentConfig
}
3.extensions.py:
扩展文件,为flask提供各种扩展功能。
from flask_bootstrap import Bootstrap
from flask_sqlalchemy import SQLAlchemy
from flask_mail import Mail
from flask_moment import Moment
from flask_migrate import Migrate
# 创建对象
bootstrap = Bootstrap()
db = SQLAlchemy()
mail = Mail()
moment = Moment()
migrate = Migrate(db=db)
# 初始化
def config_extensions(app):
bootstrap.init_app(app)
db.init_app(app)
mail.init_app(app)
moment.init_app(app)
migrate.init_app(app)
4.app文件夹中__init__.py:
初始化文件,导入扩展的功能和配置信息,然后在该文件中,针对不同的功能,进行相应的配置。
from flask import Flask
from app.config import config
from app.extensions import config_extensions
from app.views import config_blueprint
# 封装工厂方法,创建应用实例
def create_app(config_name='default'):
# 创建实例
app = Flask(__name__)
# 初始化配置
app.config.from_object(config[config_name])
# 调用初始化函数
config[config_name].init_app(app)
# 配置扩展
config_extensions(app)
# 配置蓝本
config_blueprint(app)
# 返回实例
return app
views文件夹中:
5.main.py蓝本的创建与注册:
main蓝本文件,里面存放相关的同一类路由,不同的类别的路由分开存放便于管理,注意需要蓝本注册后才能使用,
from flask import Blueprint
main = Blueprint('main', __name__)
@main.route('/')
def index():
return '<h1>Hello Flask!</h1>'
6.__init__.py:
用于对蓝本的配置和注册:
from .main import main
# 蓝本默认配置
DEFAULT_BLUEPRINT = (
#(蓝本,前缀)
(main,''),
)
#封装函数配置蓝本
def config_blueprint(app):
for blueprint, url_prefix in DEFAULT_BLUEPRINT:
app.register_blueprint(blueprint, url_prefix=url_prefix)
这篇博客介绍了如何使用Flask框架开始一个新的web项目。主要内容包括:通过manage.py控制台启动项目,config.py配置文件的设置,extensions.py中扩展功能的添加,以及在app的_init_.py和views文件夹中的蓝本管理和路由配置。特别提到了flask-script作为项目部署的便捷工具。
3661

被折叠的 条评论
为什么被折叠?



