在开发时,定义model是一门学问,但是这个往往都要自己体会.
model定义的好不好,决定你的程序好不好写,好不好维护.
但是这里并不是要讲这些.
这里只是要展示一下,是如果使用BaseModel来继承创建其它model的.
account/models.py
account/models.py:
先只定义一个UserModel,这也是很多项目都会需要的model,其实django自身是有用户的.
但是我为什么还要创建一个呢,因为我不想用它的,就这么简单.
字段:在定义片段时,我们要知道,哪些是一定要有值的,哪些是可以有默认值的,哪些是可以为空的.
比如用户的账号就是一定要有值的、用户的状态就可以给默认值、联系方式或者邮箱可以为空.
typ字段: 很多人都说为什么不叫type,为什么呢?因为我喜欢啊(主要是python中type是关键字).
并且里面的LDAP用户类型是为了之后可能要接入ldap认证使用的.
方法:给类定义一些可能用到的方法,比如用户设置密码、检查密码、生成token这些都可以.
但是不一定要一定有一般方法的,都是看自己的设计和需求.
这里需要看一下to_dict这个方法,这个方法在我的BaseModel中是有的,大部分情况下不同重写.
但是一些特殊情况就需要重写,比如用户,我是不会返回密码字段的,所以就重写去掉password字段.
再看gen_token,我这个token是通过TimestampSigner用user_id生成的,这是一个带有时间的token.
现在可以到base/api.py中看_token2user_id方法,这里就是根据上面生成的token来转成user_id,
并且具有超时判断功能.