JessePinkmen 2020-06-14
昨日回顾: 1 什么是celery:执行异步任务,和定时任务 -架构 -broker:消息中间人,redis,rabbitmq -worker:执行者(开多个) -backend:结果存储,redis -异步任务: 提交任务到broker中: -函数.delay(参数) -函数.apply_async(args=[4, 3], eta=task_time) 启动worker来执行 -定时任务: -延迟执行 -指定时间点循环执行 -beat:调度 -启动work 2 公司开发环境 -windows平台下开发 -乌班图 -mac 3 Flask -python中几大框架:djang,flask,tornado,web.py -pip3 install flask -三件套:返回字符串,返回重定向,返回页面,返回json格式:jsonify -模板: 1 可以加括号执行函数,传参数 -作业 -endpoint 如果没指定,默认会以函数名作为别名 今日内容 -反向解析 url=url_for(‘index‘) url=url_for(别名,endpoint指定的别名) -配置信息 -0 app.debug,app.secret_key -1 app.config[‘DEBUG‘] = True -2 通过文件,json,字典,类配置 -app.config.from_pyfile("python文件名称")---推荐 -app.config.from_json("json文件名称") -app.config.from_mapping({‘DEBUG‘: True}) -app.config.from_object("python类或类的路径")---推荐 -路径配置 instance_path=路径, instance_relative_config=True, 以后settings.py文件放在这个路径下 -路由系统 -典型写法 (‘/index‘,methods=[‘GET‘],endpoint=‘index‘) -内置转换器 -string -int -路由本质学到的 -如果endpoint不传,默认用函数名字view_func.__name__ -flask中的路由,是基于装饰器,但本质是:add_url_rule(rule, endpoint, f, **options) -可以这么写app.add_url_rule(‘/test‘, ‘test‘,test) -CBV介绍 -写法 class CBVTest(views.MethodView): # 需要配置能够处理的请求方式 methods=[‘GET‘,‘POST‘] def get(self): return ‘cbv_get‘ def post(self): return ‘cbv-post‘ app.add_url_rule(‘/cbvtest‘,view_func=CBVTest.as_view(name=‘cbvtest‘)) -加装饰器: decorators=[login_auth,] 写在前面,装饰器在最里层 -内部循环decorators,包裹as_view返回值(viwe函数) -add_url_rule函数参数详解(了解) -defaults={‘id‘:1} -#对URL最后的 / 符号是否严格要求 strict_slashes = None -#重定向到指定地址 redirect_to = None, -#子域名访问 subdomain = None, -支持正则表达式,自定义转换器 -#1 写类,继承BaseConverter #2 注册:app.url_map.converters[‘regex‘] = RegexConverter # 3 使用:@app.route(‘/index/<regex("\d+"):nid>‘) 正则表达式会当作第二个参数传递到类中 模板: -支持函数加括号执行,支持传参 -flask处理了xss攻击,如果想显示原生html -safe:模板中 -Markup:后台处理 请求响应: 请求: # request.method # request.args # request.form 响应: # return "字符串" # return render_template(‘html模板路径‘,**{}) # return redirect(‘/index.html‘) #return jsonify({‘k1‘:‘v1‘}) 如果加cookie,往响应头中写东西 # from flask import make_response # response = make_response(render_template(‘index.html‘)) # response是flask.wrappers.Response类型 # response.delete_cookie(‘key‘) # response.set_cookie(‘key‘, ‘value‘) # response.headers[‘X-Something‘] = ‘A value‘ # return response session: 设置值:session[‘user‘]=‘lqz‘ 删除值: session.pop(‘username‘, None) del ession[‘user‘] 取值:session[‘user‘] 闪现(message) -设置:flash(‘aaa‘) -取值:get_flashed_message() -假设在a页面操作出错,跳转到b页面,在b页面显示a页面的错误信息 -分类存 flash(‘你的名字不是lqz是%s‘,category=‘aa‘) -分类取 get_flashed_messages(category_filter=[‘aa‘,]) 请求扩展 -before_request -after_request -before_first_request 作业: -看django源码,如何实现的如果路径中不带/ ,自动加上 / from django.middleware.common import CommonMiddleware -登录认证(before_request)