#microblog#
学习flask的记录,通过学习flask巩固python
1、Flask提供了一个名为url_for()的函数,它使用URL到视图函数的内部映射关系来生成URL。 例如,url_for('login')返回/login,url_for('index')返回/index。url_for()的参数是endpoint名称,也就是视图函数的名字。
2、Python 定义了__str__()和__repr__()两种方法,str()用于显示给用户,而__repr__()用于显示给开发人员。
def __init__(self, name, gender):
self.name = name
self.gender = gender
def __str__(self):
return '(Person: %s, %s)' % (self.name, self.gender)
__repr__ = __str__
3、对数据库的更改是在会话的上下文中完成的,你可以通过db.session进行访问验证。 允许在会话中累积多个更改,一旦所有更改都被注册,你可以发出一个指令db.session.commit()来以原子方式写入所有更改。 如果在会话执行的任何时候出现错误,调用db.session.rollback()会中止会话并删除存储在其中的所有更改。 要记住的重要一点是,只有在调用db.session.commit()时才会将更改写入数据库。 会话可以保证数据库永远不会处于不一致的状态。
添加另一个用户:
u = User(username='susan', email='susan@example.com')
db.session.add(u)
db.session.commit()
每次数据库被修改时,都需要生成数据库迁移。 flask db migrate -m "new fields in user model",表示在user表更新两个新的字段。
4、Flask插件Flask-Login:管理用户登录状态,以便用户可以登录到应用,然后用户在导航到该应用的其他页面时,应用会“记得”该用户已经登录。它还提供了“记住我”的功能,允许用户在关闭浏览器窗口后再次访问应用时保持登录状态。
*用户模型上实现某些属性和方法,Flask-Login提供了一个叫做UserMixin的mixin类来将它们归纳其中
*is_authenticated: 一个用来表示用户是否通过登录认证的属性,用True和False表示。
*is_active: 如果用户账户是活跃的,那么这个属性是True,否则就是False(译者注:活跃用户的定义是该用户的登录状态是否通过用户名密码登录,通过“记住我”功能保持登录状态的用户是非活跃的)。
*is_anonymous: 常规用户的该属性是False,对特定的匿名用户是True。
*get_id(): 返回用户的唯一id的方法,返回值类型是字符串(Python 2下返回unicode字符串).
5、user = User.query.filter_by(username=username).first_or_404(),first_or_404(),当有结果时它的工作方式与first()完全相同,但是在没有结果的情况下会自动发送404 error给客户端.