tornado 通过定制二级域名制作django式分层路由

本文详细介绍了Tornado框架的基本知识,包括安装、二级域名的实现、模板系统、静态文件处理、CSRF与Cookie管理、自定义Session的实现,以及如何通过配置文件和加载函数实现Django式的分层路由。Tornado作为一个高性能的Web服务器,适合处理高并发场景,其轻量级设计和强大的异步能力使其在Web开发中独具优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

tornado框架基本知识总结

 

目录

 

tornado

Tornado是使用Python编写的一个强大的、可扩展的Web服务器。它在处理严峻的网络流量时表现得足够强健,但却在创建和编写时有着足够的轻量级,并能够被用在大量的应用和工具中。

我们现在所知道的Tornado是基于Bret Taylor和其他人员为FriendFeed所开发的网络服务框架,当FriendFeed被Facebook收购后得以开源。不同于那些最多只能达到10,000个并发连接的传统网络服务器,Tornado在设计之初就考虑到了性能因素,旨在解决C10K问题,这样的设计使得其成为一个拥有非常高性能的框架。此外,它还拥有处理安全性、用户验证、社交网络以及与外部服务(如数据库和网站API)进行异步交互的工具。

 

Tornado实现二级域名的函数,是要传入两个参数,一个是二级域名名称,一个是url映射规则。

其中url映射规则,也就是一个列表,可以直接放在各个app的url文件,

而二级域名名称,则放在系统下配置文件里,每个二级域名,对应url文件路径,和url文件下的列表变量为一个组合存放

url 文件

#!/usr/bin/env python
# -*- coding:utf-8 -*-
 
from .Controllers import Account
from .Controllers import Home
 
patterns = [
     (r"/Login.html$", Account.LoginHandler),
     (r"/CheckCode.html$", Account.CheckCodeHandler),
     (r"/Register.html$", Account.RegisterHandler),
     (r"/Index.html$", Home.IndexHandler),
     (r"/Detail-(?P<product_id>\d+)-(?P<price_id>\d+).html$", Home.DetailHandler),
     (r"/Pay.html$", Home.PayHandler),
     (r"/", Home.IndexHandler),
]

config配置文件 

routes = (
    {
        'host_pattern': 'www.tornado.com',
        'route_path': 'UIWeb.Urls',
        'route_name': 'patterns'
    },
    {
        'host_pattern': 'admin.tornado.com',
        'route_path': 'UIAdmin.Urls',
        'route_name': 'patterns'},
    {
        'host_pattern': 'dealer.tornado.com',
        'route_path': 'UIDealer.Urls',
        'route_name': 'patterns'
    }
)

做好上面的路由分离后,最后一步就是定一个 url 的加载方法,在程序启动时,将这些 url 规则加载。

url 加载函数

def load_routes(app):
    for route in Config.routes:
        host_pattern = route['host_pattern']
        route_path = route['route_path']
        route_name = route['route_name']
 
        m = __import__(route_path, fromlist=True)
        pattern_list = getattr(m, route_name)
 
        app.add_handlers(host_pattern, pattern_list)

启动程序

application = tornado.web.Application([
    #(r"/index", home.IndexHandler),
], **settings)
 
load_routes(application)
 
application.listen(8888)
tornado.ioloop.IOLoop.instance().start()
https://www.cnblogs.com/yezigege/p/13447319.html#%E9%80%9A%E8%BF%87%E5%AE%9A%E5%88%B6%E4%BA%8C%E7%BA%A7%E5%9F%9F%E5%90%8D%E5%88%B6%E4%BD%9Cdjango%E5%BC%8F%E5%88%86%E5%B1%82%E8%B7%AF%E7%94%B1来源一 来源二
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值