flask写完整项目前期所遇到的磕磕绊绊
1.就python manage.py runserver 要在 manage.py 的左上角edit configurations 添加参数(parameters) runserver
2. 配置正确的环境变量,学了这么久甚至不知道如何在windows终端下运行 py文件 执行命令 python xxx.py
3.flask并不像django那样 需要自己导入模块 并配置数据库的迁移指令
from ihome import create_app,db from flask_script import Manager from flask_migrate import Migrate, MigrateCommand app = create_app("develop") manager = Manager(app) Migrate(app,db) manager.add_command("db",MigrateCommand) if __name__ == '__main__': manager.run()
在系统环境变量正确的前提下,python manage.py db init初始化表格
然后 python manage.py db migrate -m 'init_tables' 引号里面相当于注释 但是 windows终端不支持 带空格的传参 所以 只能 以下划线相连,并且models.py文件要经过使用被其他模块引用即可
此命令才会生效,否则会无法被检测到
配置静态文件的蓝图文件所遇到的坑
调用父类方法
class ReCo(Parentcls): def __init__(self,url_map, regex): #调用父类初始化方法 super(ReCo,self).__init__(url_map) #super后面跟的是子类名字 不是父类名字 #保存正则 self.regex = regex
重写了正则表达式 以希望能匹配到url后面的字段 来进行解析,在 app里面要配置converter
app.url_map.converters['re'] = ReConverter
使用的时候
@html.route("/<re(r'.*'):html_file_name>")
本次出错是因为我之前 在 re()括号里面一直没写正则表达式 导致少传一个参数 当我发现后添加了以后 就显示 多传了一个参数原因是我调用父类方法时 super括号里写成父类名字,应该写子类的名字
csrf保护机制
即在cookie中和请求体中都要携带csrf_token字段 两者一致才校验通过 否则校验不通过 报status400 的错误
钓鱼网站转帐案例,假装登录后 以用户浏览器求向银行发起转账请求,虽然用户浏览器中有csrf_token字段但是 请求体中并不能含有csrf_token字段 该请求可被银行杜绝
浙公网安备 33010602011771号