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字段 该请求可被银行杜绝

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2021-08-07 21:06  不想拖累他人  阅读(35)  评论(0)    收藏  举报