当前位置: 首页 > news >正文

专业建设网站服务公司phpmysql网站开发全程实例 pdf

专业建设网站服务公司,phpmysql网站开发全程实例 pdf,wordpress 建站配置,qq免费注册网站2019独角兽企业重金招聘Python工程师标准 即插视图; 说明: FLASK的视图灵感来自于DJANGO的基于类而非基于函数的通用视图,主要目的是为了解决多个视图函数之间已经实现的部分,通过类继承的方式继承到其它视图,总之为了一点,就是少写代码,然后通过add_url_rule让我… 2019独角兽企业重金招聘Python工程师标准 即插视图; 说明: FLASK的视图灵感来自于DJANGO的基于类而非基于函数的通用视图,主要目的是为了解决多个视图函数之间已经实现的部分,通过类继承的方式继承到其它视图,总之为了一点,就是少写代码,然后通过add_url_rule让我们定义的视图类支持动态插入,也就是所谓的即插视图   深入视图: # 转换前: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 #!/usr/bin/env python # -*- coding: utf-8 -*- # # Authors: limanman # 51CTOBG: http://xmdevops.blog.51cto.com/ # Purpose: # # 说明: 导入公共模块 from flask import Flask, render_template # 说明: 导入其它模块 app  Flask(__name__) app.route(/about) def web_about():     return render_template(/web/about.html) app.route(/usr_manager) def usr_manager():     usrs  [u李满满]     return render_template(web/usr/manager.html, usrsusrs) app.route(/grp_manager) def grp_managr():     grps  [u管理员]     return render_template(web/grp/manager.html, grpsgrps) if __name__  __main__:     app.run(host0.0.0.0, port9000, debugTrue) 说明: 如上三个视图函数代码基本类似,都是获取数据渲染模版或直接渲染模版,我们可以尝试通过即插视图子类继承来让适应于更多的模型和模版,更加的灵活,首先得转换为类视图 # 转换后: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 #!/usr/bin/env python # -*- coding: utf-8 -*- # # Authors: limanman # 51CTOBG: http://xmdevops.blog.51cto.com/ # Purpose: # # 说明: 导入公共模块 from flask import Flask, render_template, jsonify from flask.views import View # 说明: 导入其它模块 app  Flask(__name__) class BaseView(View):     def __init__(self, template_name):         self.template_name  template_name     def get_objects(self):         return {}     def render_template(self, context):         return render_template(self.template_name, **context)     def dispatch_request(self):         context  {objects: self.get_objects()}         return self.render_template(context) class UsrManager(BaseView):     def get_objects(self):         return [u李满满] class GrpManager(BaseView):     def get_objects(self):         return [u管理员] app  Flask(__name__) app.add_url_rule(/about, view_funcBaseView.as_view(web_about, template_nameweb/about.html)) app.add_url_rule(/web/usr/manager, view_funcUsrManager.as_view(usr_manager, template_nameweb/usr/manager.html)) app.add_url_rule(/web/grp/manager, view_funcGrpManager.as_view(grp_manager, template_nameweb/grp/manager.html)) app.route(/) def index():     return jsonify({all_url_map: app.url_map.__str__()}) if __name__  __main__:     app.run(host0.0.0.0, port9000, debugTrue) 说明: 使用基于类的即插视图首先得声明一个继承自flask.views.View的子类,且必须实现一个dispatch_request调度请求的方法,在调度请求中返回原始响应数据即可,如果要将其加入app.url_map表中需要通过app.add_url_rule(self, *args, **kwargs)方法将URL规则与视图函数绑定, 既然绑定的是视图函数,那肯定不能直接绑定子类,基类flask.views.View为我们提供了一个.as_view(name, *args, **kwargs)类方法,继承下来我们可以直接调用生成一个名字为name的视图函数,当请求符合URL规则时会通过转换器将to_python数据按照app.url_map传递给对应的视图函数来处理,视图函数有可能是被装饰的函数,也有可能是通过即插视图生成的函数,最终返回的结果在在响应装饰器中修饰以便最终返回给客户端 扩展: 如果想限制HTTP方法,可以直接在基类BaseView或是子类中声明类属性methods[GET, POST]或是指定单GET/POST协议即可,如果希望对于GET/POST协议做单独处理,只需要基类继承flask.views.MethodView然后在子类中实现get/post方法,然后就可以不提供methods类属性,它会自动的按照子类中的定义去处理GET或是POST请求 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 #!/usr/bin/env python # -*- coding: utf-8 -*- # # Authors: limanman # 51CTOBG: http://xmdevops.blog.51cto.com/ # Purpose: # # 说明: 导入公共模块 from flask import Flask, render_template, jsonify, request from flask.views import MethodView # 说明: 导入其它模块 app  Flask(__name__) class BaseView(MethodView):     def __init__(self, template_name):         self.template_name  template_name     def render_template(self, context):         return render_template(self.template_name, **context)     def dispatch_request(self):         objects  getattr(self, request.method.lower())()         context  {objects: objects}         return self.render_template(context) class UsrManager(BaseView):     def get(self):         return [u李满满]     def post(self):         return [u刘珍珍] class GrpManager(BaseView, MethodView):     def get(self):         return [u匿名者]     def post(self):         return [u管理员] app  Flask(__name__) app.add_url_rule(/about, view_funcBaseView.as_view(web_about, template_nameweb/about.html)) app.add_url_rule(/web/usr/manager, view_funcUsrManager.as_view(usr_manager, template_nameweb/usr/manager.html)) app.add_url_rule(/web/grp/manager, view_funcGrpManager.as_view(grp_manager, template_nameweb/grp/manager.html)) app.route(/) def index():     return jsonify(help(app.add_url_rule)) if __name__  __main__:     app.run(host0.0.0.0, port9000, debugTrue) 扩展: FLASK还支持在运行视图函数之前通过装饰器的方式来实现权限检查,登录验证等操作,由于视图类最终是通过.as_view生成视图函数,所以基于视图类添加修饰器无卵用,只能在.as_view上做,新版的直接支持基类属性decorators列表,定义装饰器列表 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 #!/usr/bin/env python # -*- coding: utf-8 -*- # # Authors: limanman # 51CTOBG: http://xmdevops.blog.51cto.com/ # Purpose: # # 说明: 导入公共模块 from flask import Flask, render_template, jsonify, request, session, abort from flask.views import MethodView # 说明: 导入其它模块 app  Flask(__name__) def user_required(func):     def wrapper(*args, **kwargs):         uid  session.get(id, None)         if not uid:             abort(401)         return func(*args, **kwargs)     return wrapper class BaseView(MethodView):     decorators  [user_required]     def __init__(self, template_name):         self.template_name  template_name     def render_template(self, context):         return render_template(self.template_name, **context)     def dispatch_request(self):         objects  getattr(self, request.method.lower())()         context  {objects: objects}         return self.render_template(context) class UsrManager(BaseView):     def get(self):         return [u李满满]     def post(self):         return [u刘珍珍] class GrpManager(BaseView, MethodView):     def get(self):         return [u匿名者]     def post(self):         return [u管理员] app  Flask(__name__) app.add_url_rule(/about, view_funcBaseView.as_view(web_about, template_nameweb/about.html)) app.add_url_rule(/web/usr/manager, view_funcUsrManager.as_view(usr_manager, template_nameweb/usr/manager.html)) app.add_url_rule(/web/grp/manager, view_funcGrpManager.as_view(grp_manager, template_nameweb/grp/manager.html)) app.route(/) def index():     return jsonify(help(app.add_url_rule)) if __name__  __main__:     app.run(host0.0.0.0, port9000, debugTrue) 说明: FLASK为我们提供了decorators类属性来设置装饰器列表,当然其实也可以手动的在app.add_url_rule之前来修饰view_func user_required(BaseView.as_view(web_about, template_nameweb/about.html)),此时view_func就已被修饰,添加了验证功能   登录乐搏学院官网http://www.learnbo.com/ 或关注我们的官方微博微信还有更多惊喜哦~   本文出自 “满满李 - 运维开发之路” 博客请务必保留此出处http://xmdevops.blog.51cto.com/11144840/1866526 转载于:https://my.oschina.net/learnbo/blog/863217
http://www.zqtcl.cn/news/644535/

相关文章:

  • 网站建设费用说明青岛网站建设方案公司
  • 佛山市建设企业网站服务机构优化seo是什么
  • 仿70网站分类目录源码市场营销策划ppt免费模板
  • 广东圆心科技网站开发网站模板设计网页程序代码
  • 网站平台定制开发一级a做爰网站下载
  • 网站如何做流媒体wordpress导出软件
  • 电商网站流程图esp8266做网站
  • 细胞医疗 网站模版免费网址软件
  • app地推网企业seo解决方案
  • php网站转移网吧手机网站模版
  • 北京建设教育网站今天的国内新闻
  • 江苏省建设银行网站天心区网站建设公司
  • 网站分享设计网站备案收费么
  • 手机网站专题关于asp sql网站开发的书籍
  • 网站建设属于什么领域小米发布会在哪里看
  • 免费空间访客领取网站提高网站互动性
  • 湖北省市政工程建设网站汉中网站建设电话
  • 宁波大型网站推广服务丁香花在线电影小说观看
  • 合肥的网站建设公司哪家好百度旗下产品
  • 墨星写作网站阿里云购买网站登录
  • 做微网站公司知名网站设计
  • 宁波中科网站建设有限公司天津市建设 银行网站
  • 长沙建个网站一般需要多少钱化妆品网站建设方案项目书
  • 宁波外贸网站推广做网站如何选域名
  • 如何在百度上搜索到自己的网站提升关键词
  • asp net做网站建设英文网站的公司
  • 旅游英文网站 建设需求WordPress首页id
  • 南宁网站如何制作网站seo查询站长之家
  • 网站备案太麻烦门户网站模板
  • 九江建网站多少钱打开云南省住房和城乡建设厅网站