LPOJ 开发教程(八)数据库设计三

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

视图 访问路由
UserDataView http://localhost:8000/problem/
UserView http://localhost:8000/problemdata/
UserChangeView http://localhost:8000/problemtag/
UserChangeAllView http://localhost:8000/uploadfile/
UserRegisterAPIView http://localhost:8000/problemtag/
UserLoginAPIView http://localhost:8000/uploadfile/
UserLogoutAPIView http://localhost:8000/problemtag/
UserUpdateRatingAPIView http://localhost:8000/uploadfile/

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

视图 访问路由
WikiView http://localhost:8000/wiki/
WikiCountView http://localhost:8000/wikicount/
MBCodeView http://localhost:8000/mbcode/
MBCodeDetailView http://localhost:8000/mbcodedetail/
MBCodeDetailNoCodeView http://localhost:8000/mbcodedetailnocode/
TrainningContestView http://localhost:8000/trainning/
发布了401 篇原创文章 · 获赞 61 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/lzc504603913/article/details/90703173