LPOJ网址:www.lpoj.cn
LPOJ文档:docs.lpoj.cn
本节主要介绍用户和Wiki相关的数据库设计,实际上就是API的设计。
具体需要Django相关知识配合阅读。
User
此模块主要用来实现用户相关的API
models.py
model |
功能 |
User |
用户的详细信息 |
UserData |
用户的简要信息 |
User
属性 |
功能 |
类型 |
说明 |
username |
用户名 |
CharField |
primary_key |
password |
密码 |
CharField |
MD5加密后的 |
name |
昵称 |
CharField |
|
regtime |
注册时间 |
DateTimeField |
auto_now |
logintime |
上次登录时间 |
DateTimeField |
auto_now(暂时弃用) |
school |
学校 |
CharField |
|
course |
专业 |
CharField |
|
classes |
班级 |
CharField |
|
number |
学号 |
CharField |
|
realname |
真实姓名 |
CharField |
|
qq |
QQ |
CharField |
|
email |
邮箱 |
CharField |
|
type |
权限 |
IntegerField |
1 普通 2 管理员 3 超级管理员 |
UserData
属性 |
功能 |
类型 |
说明 |
username |
用户名 |
CharField |
primary_key |
ac |
用户AC数 |
IntegerField |
|
submit |
用户提交数 |
IntegerField |
|
score |
用户总得分 |
IntegerField |
|
des |
用户介绍 |
CharField |
|
rating |
用户的Rating |
IntegerField |
|
acpro |
用户AC的题目 |
TextField |
中间用竖线隔开 |
permission.py
permission |
读权限 |
写权限 |
UserSafePostOnly |
有 |
仅不修改敏感信息或管理员 |
UserPUTOnly |
无 |
仅用户 |
AuthPUTOnly |
无 |
仅管理员 |
serializers.py
serializers |
序列化字段 |
UserSerializer |
ALL |
UserNoPassSerializer |
不包括密码 |
UserNoTypeSerializer |
不包括权限 |
UserDataSerializer |
ALL |
views.py
视图 |
查询集合 |
可过滤字段 |
权限 |
可分页 |
可搜索 |
UserDataView |
rating倒序 |
(‘username’,) |
UserSafePostOnly |
否 |
否 |
UserView |
ID倒序 |
(‘username’,) |
UserSafePostOnly |
是 |
否 |
UserChangeView |
ALL |
无 |
UserPUTOnly |
否 |
否 |
UserChangeAllView |
ALL |
无 |
AuthPUTOnly |
否 |
否 |
UserLoginAPIView |
用于登陆 |
无 |
AllowAny |
否 |
否 |
UserUpdateRatingAPIView |
用于更新本地Rating |
无 |
AllowAny |
否 |
否 |
UserLogoutAPIView |
用于登出 |
无 |
AllowAny |
否 |
否 |
UserRegisterAPIView |
用于注册 |
无 |
AllowAny |
否 |
否 |
urls.py
Wiki
此模块主要用来实现Wiki相关的API
扫描二维码关注公众号,回复:
8962546 查看本文章
models.py
model |
功能 |
Wiki |
算法详情 |
MBCode |
模板介绍 |
MBCodeDetail |
模板详细代码 |
TrainningContest |
试炼谷的内容 |
Wiki
属性 |
功能 |
类型 |
说明 |
username |
用户名 |
CharField |
发布人姓名 |
type |
发布的算法 |
CharField |
发布了哪一篇算法 |
value |
具体内容 |
TextField |
|
time |
发表时间 |
DateTimeField |
auto_now |
group |
所属分组 |
CharField |
新添加的算法的分类,仅std=1时有效 |
std |
是否是标准算法 |
IntegerField |
0代表是,1代表新添加的算法 |
title |
新添加的算法标题 |
CharField |
仅std=1时有效 |
MBCode
属性 |
功能 |
类型 |
说明 |
username |
用户名 |
CharField |
primary_key |
des |
模板介绍 |
CharField |
|
time |
添加时间 |
DateTimeField |
auto_now |
MBCodeDetail
属性 |
功能 |
类型 |
说明 |
username |
用户名 |
CharField |
发布人姓名 |
title |
模板标题 |
CharField |
|
des |
模板介绍 |
DateTimeField |
|
group |
模板所属分组 |
CharField |
|
code |
模板代码 |
CharField |
|
time |
添加时间 |
DateTimeField |
auto_now |
TrainningContest
属性 |
功能 |
类型 |
说明 |
title |
试炼名称 |
CharField |
|
des |
试炼介绍 |
CharField |
|
tips |
试炼提示 |
DateTimeField |
对应Wiki中的type,用竖线隔开 |
group |
试炼分组 |
CharField |
第几章 |
num |
试炼关卡 |
CharField |
第几关 |
problem |
试炼题目 |
DateTimeField |
中间用竖线隔开 |
permission.py
permission |
读权限 |
写权限 |
WikiUserOnly |
有 |
仅用户或管理员 |
UserOnly |
有 |
仅用户或管理员 |
ManagerOnly |
有 |
仅管理员 |
serializers.py
serializers |
序列化字段 |
WikiSerializer |
ALL |
WikiCountSerializer |
不包括内容 |
MBCodeSerializer |
ALL |
MBCodeDetailSerializer |
ALL |
MBCodeDetailNoCodeSerializer |
不包括代码 |
TrainningContestSerializer |
ALL |
views.py
视图 |
查询集合 |
可过滤字段 |
权限 |
可分页 |
可搜索 |
WikiView |
ALL |
(‘username’, ‘type’, ‘group’, ‘std’,) |
WikiUserOnly |
否 |
否 |
WikiCountView |
ALL |
(‘username’, ‘type’) |
UserOnly |
否 |
否 |
MBCodeView |
ALL |
(‘username’,) |
UserOnly |
否 |
否 |
MBCodeDetailView |
ALL |
(‘username’, ‘group’, ‘des’, ‘title’) |
UserOnly |
否 |
否 |
MBCodeDetailNoCodeView |
ALL |
(‘username’, ‘group’, ‘des’, ‘title’) |
UserOnly |
否 |
否 |
TrainningContestView |
ALL |
(‘group’, ‘title’,) |
ManagerOnly |
否 |
否 |
urls.py