tornado自定义实现django  include方法


  • 自定义URLmethod模块
  •  from Custom.errors import *
    
     def include(base_url, expand_url):
    # base_url必须是字符串类型
    if not isinstance(base_url, str):
    raise TypeError("base_url must be String type, but {} is not".format(str(base_url))) # 必须在拓展的urls里面有一个urlpatterns的对象,如果没有就会引发AttributeError
    getattr(expand_url, 'urlpatterns') if not isinstance(expand_url.urlpatterns, (list, tuple)):
    raise UrlError(
    "expand_url.urlpatterns must be a list or tuple, but {} is not".format(str(expand_url.urlpatterns))) urlpatterns = expand_url.urlpatterns new_urlpatterns = [] for url in urlpatterns: items = []
    new_base_url = base_url + url[0] # 将原始的url和拓展的url拼接
    items.append(new_base_url)
    items.append(url[1])
    new_urlpatterns.append(tuple(items)) return new_urlpatterns def extend(*args):
    # 将所有的include元素拓展成新的列表
    urlpatterns = []
    for urlpattern in args:
    if isinstance(urlpatterns, list):
    urlpatterns.extend(urlpattern)
    else:
    raise UrlError
    return urlpatterns
  • 自定方法的使用
  •  from tornado.web import Application
    from tornado.ioloop import IOLoop
    from tornado.httpserver import HTTPServer
    from tornado.options import options, define
    from Custom.URL_method import include, extend
    from Robot import urls define('port', default=80, type=int) settings = {
    'template_path': 'templates',
    'static_path': 'static',
    'debug': True
    } urlpatterns = extend(
    include("", urls),
    include(r'/qrcode', urls),
    ) app = Application(handlers=urlpatterns, **settings) if __name__ == '__main__':
    options.parse_command_line()
    http = HTTPServer(app)
    http.listen(options.port)
    IOLoop.current().start()
  • 自定义url模块
  •  from . import views
    
     urlpatterns = [
    (r'/index', views.IndexHandler),
    (r'/test', views.TestHandler)
    ]
  • views模块
  •  from tornado.web import RequestHandler
    
     class IndexHandler(RequestHandler):
    def get(self):
    self.write("hello") class TestHandler(RequestHandler):
    def get(self):
    self.write("test page")
  • 效果展示

tornado自定义实现django include方法的更多相关文章

  1. Tornado 自定义Form,session实现方法

    一. 自定义Tornado 验证模块 我们知道,平时在登陆某个网站或软件时,网站对于你输入的内容是有要求的,并且会对你输入的错误内容有提示,对于Django这种大而全的web框架,是提供了form表单 ...

  2. django 2.0 中URL的include方法使用分析

    一.问题出现: 在使用Django2.0,配置全局URL时,希望指向某个APP的URL,配置如下: from django.contrib import admin from django.conf. ...

  3. Django中利用filter与simple_tag为前端自定义函数的实现方法

    转自:http://www.jb51.net/article/116303.htm 前言 Django的模板引擎提供了一般性的功能函数,通过前端可以实现多数的代码逻辑功能,这里称之为一般性,是因为它仅 ...

  4. 自定义tag标签的方法

    JSP1.0中可以通过继承TagSupport或者BodyTagSupport来实现自定义的tag处理方法. JSP2.0中也支持另外一种更为简单的自定tag的方法,那就是直接讲JSP代码保存成*.t ...

  5. tornado requesthandler可以重写的方法

    一 :RequestHandler 一般我们继承tornado.web.RequestHandler 1,RequestHandler.initialize()一般用于初始化,第三个字典参数传入 cl ...

  6. 《Entity Framework 6 Recipes》中文翻译系列 (26) ------ 第五章 加载实体和导航属性之延缓加载关联实体和在别的LINQ查询操作中使用Include()方法

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 5-7  在别的LINQ查询操作中使用Include()方法 问题 你有一个LINQ ...

  7. Servlet---RequestDispatcher.include方法

    为了实现代码重用,需要将某些代码和数据放在一个或多个Servlet中,以供其他Servlet使用,提供了RequestDispatcher.include方法,首先通过getServletContex ...

  8. Android自定义View的实现方法,带你一步步深入了解View(四)

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/17357967 不知不觉中,带你一步步深入了解View系列的文章已经写到第四篇了,回 ...

  9. tornado和django的结合使用 tornado Server for django WSGI APP

    #!/usr/bin/env python # Run this with # Serves by default at # http://localhost:8080/hello-tornado a ...

随机推荐

  1. requests.exceptions.SSLError报错

    requests.exceptions.SSLError: HTTPSConnectionPool(host='www.baidu.com', port=443): Max retries excee ...

  2. 判断 tableZen 是否有 横向滚动条

    判断 tableZen 是否有 横向滚动条 const outWidth = this.$refs.tableInnerZen.$el.clientWidth ].$el.clientWidth

  3. 记一次nor flash固件烧录速度优化

    背景 某个方案使用的是spinor作为存储介质,每次烧录新固件都耗时数分钟,为了提高效率,需要对其进行优化. 分析流程 基本流程 当前烧录流程,有一个可选步骤,全盘擦除,这个步骤耗时达数分钟.不过这是 ...

  4. Java14来了!Switch竟如此简单?Lombok也不需要了?来使用Idea配置Java14的开发环境吧!

    Java 14 在 2020.3.17 日发布正式版了,但现在很多公司还在使用 Java 7 或 Java 8,每当看到 Java 又发布新版本心里就慌得一匹.不过此版本并不是 LTS (长期支持版) ...

  5. nmon使用问题汇总(不定期更新)

    nmon使用问题汇总 1.nmon常用命令: ./nmon -s1 -c300 -f -m /root/nmon-test-result/项目-50并发/ 2.设置nmon参数为-s1 -c720,发 ...

  6. 我的第一个html静态网页

    <!doctype html> <html>     <head>         <title>王兆国的个人博客</title>      ...

  7. 目标检测 | 经典算法 Cascade R-CNN: Delving into High Quality Object Detection

    作者从detector的overfitting at training/quality mismatch at inference问题入手,提出了基于multi-stage的Cascade R-CNN ...

  8. settings插拔式源码

    创建一个文件夹notify __init__.py import settings import importlib def send_all(content): for path_str in se ...

  9. 攻防世界web新手区

    攻防世界web新手区 第一题view_source 第二题get_post 第三题robots 第四题Backup 第五题cookie 第六题disabled_button 第七题simple_js ...

  10. postgre安装和使用(R&Python)

    安装postgre http://helianthus-code.lofter.com/post/1dfe03e0_1c68233aa 这里选C更好 这里口令密码输入就是黑的 我装的时候反复报错,查了 ...