欢迎来到天天文库
浏览记录
ID:30776638
大小:61.00 KB
页数:10页
时间:2019-01-03
《flaskwebdevelopment——大型应用程序结构》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、FlaskWebDevelopment大型应用程序结构虽然小型web应用程序用单个脚本町以很方便,但这种方法却不能很好地扩展。随着应用变得复杂,在单个大的源文件小处理会变得问题重重。与人多数其他web框架不同,Flask对人型项目没有特定的纟R织方式;应用程序的结构完全交给开发人员自己决定。在这一章,提出一个可能的方式來组织管理一个大型应用程序的包和模块。这种结构将用于书屮其余的示例屮。1、项目结构示例7-1展示基本Flask应用程序结构示例基本多文件Flask应用结构
2、-flaskyl-app/
3、-templates/
4、-static/
5、-mai
6、n/
7、-_init_.py
8、-errors>py
9、-forms.py
10、-views.py
11、-_init_.py
12、-email.py
13、-models14、-_init_.py卜test*.py15、-venv/16、equirements.txt17、-config.py18、-manage.py这个结构有四个顶层目录:Flask应用一般放置在名为app的目录下。migrations目录包含数据库迁移脚木,这和之前说的一样。单元测试放置在test目录下venv冃录包含Python虚拟环境,这和Z前说的也是一样的。还有一些新的文19、件:requirements.txt列川一些依赖包,这样就可以很容易的在不同的计算机上部署一个相同的虚拟环境。config.py存储了一些配置设置。manage・py用于启动应用程序和其他应用程序任务。■为了帮助你完全理解这个结构,下面会描述将hello.py应用改为符合这一结构的整个流程。2、配置选项应用程序通常需要几个配置设叠。最好的例了就是在开发过程屮需要使用不同的数据库,测试,生产环境,这样他们可以做到互不干扰。我们可以使丿IJ配置类的层次结构來代替hello.py中的简单类字典结构配置。示例7-2展示了config,py文件。示例7-2.20、config.py:应用程序配置importosbasedir=os.path.abspath(os.path.dirname(_file_))classConfig:SECRETKEY=os.environ.get('SECRETKEY')or*hardtoguessstring*SQLALCHEMY_COMMIT_ON_TEARDOWN=TrueFLASKY_MAIL_SUB3ECT_PREFIX=*[Flasky]1FLASKY_MAIL_SENDER='FlaskyAdmin*FLASKY_ADMIN21、=os.environ.get(*FLASKY_ADMIN*)cmethoddefinit_app(app):passclassDevelopmentConfig(Config):DEBUG=TrueMAIL_SERVER='smtp.googlemail.com*MAIL_PORT=587MAIL_USE_TLS=TrueMAIL_USERNAME=os.environ.get(,MAIL_USERNAME')MAIL_PASSWORD=os.environ.get(*MAIL_PASSWORD1)SQLALCHEMY_DATABASE_URI=22、os.environ.get('DEV_DATABASE_URL*)or'sqlite:///'+os.path.join(basedir,'data・dev.sqlite')classTestingConfig(Config):TESTING=TrueSQLALCHEMY_DATABASE_URI=os.environ.get('TEST_DATABASE_URL*)or'sqlite:///'+os.path.join(basedir,'da・sqlite')classProductionConfig(Config):SQLALCHEMY_23、DATABASE_URI=os.environ.get('DATABASE_URL1)or'sqlite:///'+os.path.join(basedir,'data.sqlite")config={'development':DevelopmentConfig,'testing':TestingConfig,'production':ProductionConfig,'defauIt':DevelopmentConfigConfig基类包含一些相同配置;不同的子类定义不同的配置。额外配置可以在需要的时候在加入。为了让配置更灵活更安全,一些设置24、可以从环境变量中导入。例如,SECRETJCEY,由于它的敏感性,可以在环境中设置,但如果环境中没有定义就必须提供一个默认
14、-_init_.py卜test*.py
15、-venv/
16、equirements.txt
17、-config.py
18、-manage.py这个结构有四个顶层目录:Flask应用一般放置在名为app的目录下。migrations目录包含数据库迁移脚木,这和之前说的一样。单元测试放置在test目录下venv冃录包含Python虚拟环境,这和Z前说的也是一样的。还有一些新的文
19、件:requirements.txt列川一些依赖包,这样就可以很容易的在不同的计算机上部署一个相同的虚拟环境。config.py存储了一些配置设置。manage・py用于启动应用程序和其他应用程序任务。■为了帮助你完全理解这个结构,下面会描述将hello.py应用改为符合这一结构的整个流程。2、配置选项应用程序通常需要几个配置设叠。最好的例了就是在开发过程屮需要使用不同的数据库,测试,生产环境,这样他们可以做到互不干扰。我们可以使丿IJ配置类的层次结构來代替hello.py中的简单类字典结构配置。示例7-2展示了config,py文件。示例7-2.
20、config.py:应用程序配置importosbasedir=os.path.abspath(os.path.dirname(_file_))classConfig:SECRETKEY=os.environ.get('SECRETKEY')or*hardtoguessstring*SQLALCHEMY_COMMIT_ON_TEARDOWN=TrueFLASKY_MAIL_SUB3ECT_PREFIX=*[Flasky]1FLASKY_MAIL_SENDER='FlaskyAdmin*FLASKY_ADMIN
21、=os.environ.get(*FLASKY_ADMIN*)cmethoddefinit_app(app):passclassDevelopmentConfig(Config):DEBUG=TrueMAIL_SERVER='smtp.googlemail.com*MAIL_PORT=587MAIL_USE_TLS=TrueMAIL_USERNAME=os.environ.get(,MAIL_USERNAME')MAIL_PASSWORD=os.environ.get(*MAIL_PASSWORD1)SQLALCHEMY_DATABASE_URI=
22、os.environ.get('DEV_DATABASE_URL*)or'sqlite:///'+os.path.join(basedir,'data・dev.sqlite')classTestingConfig(Config):TESTING=TrueSQLALCHEMY_DATABASE_URI=os.environ.get('TEST_DATABASE_URL*)or'sqlite:///'+os.path.join(basedir,'da・sqlite')classProductionConfig(Config):SQLALCHEMY_
23、DATABASE_URI=os.environ.get('DATABASE_URL1)or'sqlite:///'+os.path.join(basedir,'data.sqlite")config={'development':DevelopmentConfig,'testing':TestingConfig,'production':ProductionConfig,'defauIt':DevelopmentConfigConfig基类包含一些相同配置;不同的子类定义不同的配置。额外配置可以在需要的时候在加入。为了让配置更灵活更安全,一些设置
24、可以从环境变量中导入。例如,SECRETJCEY,由于它的敏感性,可以在环境中设置,但如果环境中没有定义就必须提供一个默认
此文档下载收益归作者所有