CTFd 二次开发之注册处添加新的个人属性

菜的扣脚的我为了使在 CTFd 中注册页面中新增一个学号的功能,捣鼓了半天。最后终于弄好了,这里做下总结。个人对 flask 还是不是很熟悉。。

这里以添加一个 sid 的字段为例

数据库配置

在 mysql 数据库中添加一个列名为 sid 的字段名

alter table users add column sid varchar(20) default 0;

有两个注意的点:

  1. 字段需要设置默认值,不然 flask 会报错
  2. 字段位置不能在中间的某个位置,只能放置在最后面(默认是最后)

html 文件配置

在 /CTFd/CTFd/themes/core/templates/register.html 中添加 html 表单数据,这里主要是注意 name 的值,因为是 html 的 form 表单使用这个字段名来取值

  • Flask 对于 post 请求的参数获取:
sid = request.form['sid']

auth.py 文件配置

在 /CTFd/CTFd/auth.py 中的 register 函数中添加

sid = Users.query.add_columns('sid','id').filter_by(sid=request.form['sid']).first()

接着在下面的代码段中添加:

sid=request.form['sid']

models 类中的配置

接下来还需要在 /CTFd/CTFd/models/init.py 中的 Users 类中添加一个表单名:

sid = db.Column(db.String(20))
  • 这里 String 函数里的值为 mysql 语句中新增一个字段时指定的长度

这里在注册时就能正常获取到相应的 POST 过来的数据了。

posted @ 2019-05-04 01:00  H4lo  阅读(881)  评论(1编辑  收藏  举报