对于7七月老师,我更喜欢他的代码风格
伪面向对象
类:描述特征(类变量,实例变量)
行为(方法)
jinjia2
在jinjia2中遍历字典的方式,在遍历的数据后面需要加上items函数
{
%for key,value in data.items()%}
{
{
key}}--{
{
value}}
模板继承
父模板
{
% block content%}
This is parent
{
% endblock %}
子模版
{
%extends layout.html%}}
{
% block content%}
{
{
super()}} #加上可调用父模板
This is parent
{
% endblock %}
老师写代码有一种,实例化就返回值得错觉
@property
def password(self): #模型属性的读
pass
@password.setter
def password(self, raw):#模型属性的写
pass
a:object 属性:'bar' 值:5
>>> getattr(a, 'bar') # 获取属性 bar 值
1
>>> setattr(a, 'bar', 5) # 设置属性 bar 值
>>> a.bar
flask的模型中定义属性是自动读取嘛?
答:flask模型中定义了属性,该属性会在调用模型的时候自动执行。
自定义验证器
在flask中有许多场景需要自定义验证器,如何自定义验证器?
在validate加上属性,就是对这个属性的自定义属性
def validate_Email(self,field):
if User.query.filter_by(email=field.data).first():
raise ValidateError("电子邮件已经被注册")
该验证器定义在forms文件夹里,专门做验证作用。field会自动匹配属性
获取验证器里面的数据是这样的
form = RegisterForm()
form.password.data 这样就可以获取验证器里面的数据
flask_login
在使用flask_login之前,需要初始化LoginManage()
from flask_login import LoginManager
login_manage = LoginManager()
login_manage.init_app(app)#传入app
使用login_user就是为了将用户的信息存储到cookie中去。
如何存储到cookie中,存储的形式又是什么呢?
答:在cookie中存储是这个用户id。
如何识别用户的数据呢?
答:在用户的模型中&