此外,这种结构还多了一些新文件:

  • requirements.txt列出了所有依赖包,便于在其他计算机中重新生成相同的虚拟环境
  • config.py存储配置
  • manage.py定义了Flask应用实例,用于启动程序,同时还有一些辅助管理应用的任务

建议

  • 创建虚拟环境

https://www.yuque.com/u1046159/vaeckn/dgxqs3#mtMDj

  • 使用程序工厂函数

create_app() 函数就是程序的工厂函数,接受一个参数,是程序使用的配置名

  • 在蓝本中实现程序功能

  • 推荐使用 url_for() 生成 URL,因为这个函数使用 URL 映射生成 URL,从而保证 URL 和定义的路由兼容,而且修改路由名字后依然可用

  • 定义模型时,使用类变量 tablename 定义在数据库中使用的表名,如果没有定义 tablename,Flask-SQLAlchemy 会使用一个默认名字,但默认的表名没有遵守使用复数形式进行命名的约定,所以最好由我们自己来指定表名。

    1. class Role(db.Model):
    2. __tablename__ = 'roles'
    3. id = db.Column(db.Integer, primary_key=True)
    4. name = db.Column(db.String(64), unique=True)
    5. def __repr__(self):
    6. return '<Role %r>' % self.name

    虽然没有强制要求,但这两个模型都定义了 repr() 方法,返回一个具有可读性的字符串表示模型,可在调试和测试时使用。

  • 程序中必须包含一个 requirements.txt 文件,用于记录所有依赖包及其精确的版本号


  1. #pip 可以使用如下命令自动生成这个文件
  2. pip freeze >requirements.txt

需求文件内容格式:

  1. Flask==0.10.1
  2. Flask-Bootstrap==3.0.3.1
  3. Flask-Mail==0.9.0
  4. Flask-Migrate==1.1.0
  5. Flask-Moment==0.2.0
  6. Flask-SQLAlchemy==1.0

在其他虚拟环境中使用requirements.txt命令

  1. pip install -r requirements.txt
  • Flask的认证扩展

大多数程序都要进行用户跟踪。用户连接程序时会进行身份认证,通过这一过程,让程序知道自己的身份。程序知道用户是谁后,就能提供有针对性的体验。

最常用的认证方法要求用户提供一个身份证明(用户的电子邮件或用户名)和一个密码。

Flask-Login:管理已登录用户的用户会话。
Werkzeug:计算密码散列值并进行核对。
itsdangerous:生成并核对加密安全令牌。