CTFd 二次开发之注册处添加新的个人属性
菜的扣脚的我为了使在 CTFd 中注册页面中新增一个学号的功能,捣鼓了半天。最后终于弄好了,这里做下总结。个人对 flask 还是不是很熟悉。。
这里以添加一个 sid 的字段为例
数据库配置
在 mysql 数据库中添加一个列名为 sid 的字段名
alter table users add column sid varchar(20) default 0;
有两个注意的点:
- 字段需要设置默认值,不然 flask 会报错
- 字段位置不能在中间的某个位置,只能放置在最后面(默认是最后)
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 过来的数据了。