回顾
-
通过前几篇文章的内容, 我们已经搭建了基于
Flask框架的一个简单的Web应用,server.py的代码如下from flask import Flask, make_response from flask.views import MethodView app = Flask(__name__) class IndexHandler(MethodView): def get(self): resp = make_response('It is a GET request') resp.headers['Strict-Transport-Security'] = 'max-age=15768000; includeSubDomains; preload' return resp if __name__ == '__main__': app.add_url_rule('/', view_func=IndexHandler.as_view('index')) context = ('./server.cer', './server.key') app.run(port=443, host='0.0.0.0', debug=True, threaded=True, ssl_context=context)
抽象出 Page
类
-
由于我们在以后的每个页面的
Handler中都要用到HSTS, 以及其他一些共用的特性, 我们将其提取出来, 抽象成一个Page类, 修改server.py如下from flask import Flask, make_response from flask.views import MethodView app = Flask(__name__) class Page(MethodView): def render(self, resp): resp.headers['Strict-Transport-Security'] = 'max-age=15768000; includeSubDomains; preload' return resp class IndexHandler(Page): def get(self): content = 'It is a GET request' return self.render(content) if __name__ == '__main__': app.add_url_rule('/', view_func=IndexHandler.as_view('index')) context = ('./server.cer', './server.key') app.run(port=443, host='0.0.0.0', debug=True, threaded=True, ssl_context=context)
提取其他共用特性
-
get_args()args一般出现在GET请求中, 比如 Google 搜索时地址栏出现的https://www.google.com/search?q=awesome, 其中?后面的内容就是args, 以key-value的形式出现. 对应刚才的例子,key就是q,value就是awesome. 如果有多组key-value, 中间就用&连接, 如?q=awesome&type=server. 这种形式很容易让我们联想到Python的字典结构dict. 根据 文档 , Flask 是通过 ImmutableMultiDict 来存储args的. 我们可以在Page类中增加get_args()方法from flask import request class Page(MethodView): def get_args(self, key): return request.args.get(key)这样, 我们就可以通过调用
get_args()来获取用户请求中的参数了, 举个栗子class AwesomeHandler(Page): def get(self): if self.get_args('q') == 'awesome': # do something return 'This is an awesome page!' -
同样地, 我们可以在
Page类中增加其他特性, 如get_date(),get_referer(),get_cookies()等等, 编写好的Page类如下from flask import request from datetime import datetime, date class Page(MethodView): def render(self, resp): resp.headers['Strict-Transport-Security'] = 'max-age=15768000; includeSubDomains; preload' return resp def get_args(self, key): return request.args.get(key) def get_date(self, year=0, month=0, day=0): if year and month and day: return date(year, month, day) else: return date.today() def get_referer(self): return request.headers.get('referer') def get_cookies(self): return request.cookies
参考资料
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
网站转换率优化之道
[美] Khalid Saleh、[美] Ayat Shukairy / 顾 毅 / 人民邮电出版社 / 2012-4 / 45.00元
内容简介: 怎样才能将访问者转化为顾客? 本书提供了一些切实可行的建议,比如如何说服访问者作出购买决定,如何避免用户因信息过量或导航繁琐而离开网站等。不论你是在设计或营销大型电子商务网站,还是在管理中小型在线业务,都可以从本书学会怎样使用市场营销原则、设计方法、可用性原则和分析数据来持续提升网站的转换率。 作者帮助过众多公司吸引在线顾客,有着丰富的实战经验,在书中细致讨论了从访问......一起来看看 《网站转换率优化之道》 这本书的介绍吧!