Flask 实用技巧

Flask 常用技巧

  1. 快速添加数据

    在基础数据模型中,添加一个set__attrs方法,当添加数据时 ,使用模型对象掉用改方法,传入数据即可.---例: 表单提交时, 传入 form.data 再db.session.add(模型对象),最后db.session.commit() 提交即可。

        def set_attrs(self, form_data):  
            # 添加数据 / 只能在表单name与字段名相同时可以使用该方法
            from apps.cms.verify_view import set_password
            for k, v in form_data.items():
                if hasattr(self, k) and k != 'id':
                    if k != 'password':
                        setattr(self, k, v)
                    else:  # 对密码进行加密
                        setattr(self, k, set_password(v))
    
  2. 数据字典化( 强转字典 )

    如果视图中没有定义keys方法,将不能进行字典化

    class Dishes_Class_Model(BaseModel):
        name = db.Column(db.String(length=16), comment='名称')
        type_accumulation = db.Column(db.String(length=50), comment='菜品编号')
        merchant_id = db.Column(db.INT, comment='所属商家ID')
        shop_id = db.Column(db.INT, comment='所属店铺ID')
        description = db.Column(db.String(length=250), comment='描述')
        is_default = db.Column(db.Boolean, default=False, comment='是否是默认分类')
        category_id = db.Column(db.String(16), comment='分类UUID')
    
    
         def keys(self):		# 返回相应字段(大前提) 
            return 'name', 'type_accumulation', 'shop_id', 'description', 'is_default'
    

    使用__getitem__魔术方法,item参数传入一个可迭代类型的keys

    # 强转字典
        def __getitem__(self, item):
            if hasattr(self, item):
                return getattr(self, item)
    
  3. 密码哈希加盐及验证:

    from werkzeug.security import generate_password_hash, check_password_hash
    
    
    # 哈希加盐的密码方式
    def set_password(password):
        return generate_password_hash(password=password, method='pbkdf2:sha256', salt_length=32)
    
    
    # 哈希验证密码的方式
    def check_password(set_password, password):
        return check_password_hash(pwhash=set_password, password=password)  # 验证成功返回True
    

    使用 set_password(password) 方法对键入的字符串哈希化

    返回结果: pbkdf2:sha256:50000$vVSMhPMPZIpj6BsIk9r5rQbGwRA6bhGE$8e1e7e0c8eb8c1007120eb491617afe09f022d2175ad78e400316052b1b7d3ae
    
    

    使用 check_password(哈希后的值,键入的字符串) 进行校验,校验成功返回True,反之Flase

知识补充:

repr 与__str__ 的区别:

    def __repr__(self):
        return self.goods_name
    #**********************************************#
    def __str__(self):
        return self.goods_name
    

相同点:

​ 这两个方法都是用于显示的,__str__是面向用户的,而__repr__面向程序员。

不同点:

str 是针对print打印,只有print打印出结果,__repr__调用对象是,将打印返回值

获取配置信息:

current_app.config.get('SESSION_REDIS')

API接口开发_前后端分离开发:

REST 资源状态转移 设计方案( 建议 )

RESTful api标准___使用名词作为资源信息

使用HTTP请求的方式作为资源的操作动词[GET| POST | PUT/PATCH |DELETE]

请求必须通过json进行数据的给与响应也通过json格式反馈

API接口的用户身份认证

网站开发:

​ cookie session

API:

​ Basic Auth ( 请求: Authorization: 用户:密码 base64的编码 )

​ HTTP 明文传输 HTTPS服务进行数据传输

令牌token技术来实现用户身份的识别问题

​ cookie:

​ 浏览器

​ 服务器通过响应的set_cookie

​ 浏览器在请求时: cookie:xxx

​ APP:

​ 服务器把token值传给客户端,跟客户约定一个协议,让客户端来存储

​ 客服端在需要权限的API接口访问时,把存储的token值一起挟带过来

token的格式:

​ JWT的格式

​ JSON格式

​ {"uid":101} + 签名的行为 ​ {"uid":101} + 密钥的签名

​ {"uid":102} + 密钥的签名

项目地址:https://gitee.com/yulangren/elm.git

转载于:https://my.oschina.net/u/3978509/blog/2999877

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值