zoukankan      html  css  js  c++  java
  • Werkzeug工具包学习-官方例子Shortly分析

    为了学习werkzeug的wsgi框架工具,今天真对官网的例子进行调试运行。涉及到了werkzeug工具包,jinja2前端模版,以及redis内存库,之后可以灵活定制自己主页。再次,作以记录。

    首先,参考官网流程完成部署,当然,Python2和Python3有一定区别,需要大家注意,官网代码都是一句Python2.7的。这里主要涉及到在2.7中可以import urlparse,但3.5中需要用urllib.parse.urlparse。

    官网:http://werkzeug.pocoo.org/docs/0.11/tutorial/#introducing-shortly

    中文翻译后的网站:http://werkzeug-docs-cn.readthedocs.io/zh_CN/latest/tutorial.html#step-1

    代码文件: https://github.com/pallets/werkzeug/tree/master/examples/shortly

    按着代码部署,解决一些琐碎问题,就可以运行了(自己加了一个背景而已):

    代码网上都是有的,所以这里不多说了,主要记录一下我对werkzeug运行流程的理解:

    1. run_simple('127.0.0.1', 5000, app, use_debugger=True, use_reloader=True)函数中传入app实例,即为Shortly类的对象,Shortly是处理逻辑业务的类。在调用Shortly的__init__()方法初始化实例的时候,初始化了redis的配置template所在路径jinja2环境配置url的映射关系

    2. 通过__call__()方法调用wsgi_app(self, environ, start_response)方法,传入environ(上传请求的相关信息)和start_response实例。之后,在wsgi_app中调用

      dispatch_request(request)方法去分发请求,即根据url映射关系通过请求的url找到对应的方法。

    3. 在dispatch_request中,重新组装了方法名称,使其可以调用相关方法,并加入错误页码404处理。其中adapter = self.url_map.bind_to_environ(request.environ)和endpoint, values = adapter.match()将请求信息的url和map中的endpoint匹配返回对应的endpoint,通过return getattr(self, 'on_' + endpoint)(request, **values)组装成对应方法名称,并调用。

    4. 执行对应方法,处理逻辑,用数据填充模版,并渲染,之后返回。或者重定向到别的节面。

    大体流程如上,了解后发现该项目可以有很多很多扩展,比如我的个人主页的首页:

    http://119.29.207.141:5000

  • 相关阅读:
    opencv学习之米粒分割 #201906121549
    opencv学习之hsv通道分解 #201906101704
    opencv学习之图像滤波预处理 #201906101646
    opencv学习之addWeighted图片打水印 #201906061030
    alpha channel
    rm git commit history
    git 使用学习
    排序算法的c++实现
    leetcode 246 中心对称数问题
    大数打印问题
  • 原文地址:https://www.cnblogs.com/yuanzhaoyi/p/6082036.html
Copyright © 2011-2022 走看看