一、关于flask框架的理解
单脚本文件编写,可以参考大神博客https://www.cnblogs.com/senlinyang/p/8341774.html
有的小伙伴不理解flask结构里面那么多包和模块,所以本篇博客主要针对 flask 整个框架的理解,将陆续添加各个细节的链接。
- flask应用一般保存在包app中:api文件夹下是api接口相关文件,auth文件夹下是用户登录后相关文件,main文件夹下是主页面,static是一些静态文件,templates中是html文件。另外,models用来处理数据库,forms处理表单提交信息,views中是视图函数。
- 数据库迁移脚本在migrations文件夹中。
- 单元测试在 tests文件夹中
- 当然还有python虚拟环境在venv,这里截图没截到
顶层文件下还有虚拟环境 venv,配置文件config.py,主程序 flasky.py
1.1config
应用常常需要设定多个配置,因为需要使用不同的数据库,这样才能彼此不影响。
- 在单脚本中,我们有这样类似字典的 app.config对象
- 在项目结构中,我们使用配置类 Config。
具有层次结构的配置类代替之前 app.config 对象;
基类 Config 中包含通用配置;
三个子类中, SQLALCHEMY_DATABASE_URI 变量都被指定了不同的值,这样可以用于不同的数据库。
1.2 forms表单:
在注册,登录,以及博客编辑 都需要用到表单来处理提交的信息。
我们以登录界面的 class LoginForm 为例:
class LoginForm(FlaskForm):
email = StringField('Email', validators=[DataRequired(), Length(1, 64),
Email()])
password = PasswordField('Password', validators=[DataRequired()])
remember_me = BooleanField('Keep me logged in')
submit = SubmitField('Log In')
1.3登录界面
处理表单的文件写好了,就要写一个登录界面了。登录界面都放在 templates 文件夹中。
模板是包含响应文本的文件,其中包含用占位变量表示的动态部分,其具体值只在请求的上下文中才知道。使用真实值替换变量,再返回最终得到的响应字符串,这一过程称为渲染,需要使用到 Jinja2 模板引擎。