【tornado】4.config.py文件说明、路由传参及网址重定向

config.py文件说明

config.py文件内容为:


1.DEBUG选项
  • DEBUG设置为true时,工作在调试模式
  • 调试模式中,保存改动时会重启服务器,减小手动重启服务器的次数
  • 如果保存后的代码有错,会重启失败
2.static_path

设置静态文件目录

3.template_path

设置模板文件目录



路由传参

路由传参就是通过app路由将参数传至handler页面的代码中去,比如下面的代码就是将两个参数:“word1”:“test1”,“word2”:"test2"传到index.py文件的PassParameterHandler页面代码中去。

首先修改application.py文件:
from views.index import IndexHandler,HomeHandler,PassParameterHandler
import tornado.web
import config

class Application(tornado.web.Application):
    def __init__(self):
        handlers=[
            (r'/',IndexHandler),
            (r'/home',HomeHandler),
            # 路由传参
            (r'/passparameter',PassParameterHandler,{"word1":"test1","word2":"test2"})
        ]
        super(Application,self).__init__(handlers,**config.settings)

传参通过字典的方式进行

然后修改index.py文件:

传参需要重写initialize方法:

from tornado.web import RequestHandler

class IndexHandler(RequestHandler):
    def get(self):
        self.write("test")

class HomeHandler(RequestHandler):
    def get(self):
        self.write("test:Home")

# 路由传参
class PassParameterHandler(RequestHandler):
    def initialize(self,word1,word2):
        self.word1=word1
        self.word2=word2

    def get(self):
        print(self.word1,self.word2)
        self.write("pass parameter test")

运行结果:

在浏览器中输入:http://localhost:9000/passparameter
在这里插入图片描述



网址重定向

这部分内容包括2个:
1.网页的重定向即网页的跳转
2.用send_error和write_error方法处理HTTP状态错误码

1.网页重定向

网址重定向就是当我们输入一个URL地址时会跳转其他的页面去
首先修改application.py文件,增加一个路由:

from views.index import IndexHandler,HomeHandler,RedirectHandler
import tornado.web
import config

class Application(tornado.web.Application):
    def __init__(self):
        handlers=[
            (r'/',IndexHandler),
            (r'/home',HomeHandler),
            # 网页重定向
            (r'/redirect',RedirectHandler)
        ]
        super(Application,self).__init__(handlers,**config.settings)

然后在index.py文件中增加一个重定向的页面handler,RedirectHandler:

from tornado.web import RequestHandler

class IndexHandler(RequestHandler):
    def get(self):
        self.write("test")

class HomeHandler(RequestHandler):
    def get(self):
        self.write("test:Home")

# 重定向:这里重定向到了根目录
class RedirectHandler(RequestHandler):
    def get(self, *args, **kwargs):
        self.redirect("/")

这里是重定向到了根目录:self.redirect("/")

运行结果:

在浏览器中输入:localhost:9000/redirect
页面会自动跳转到根目录中去
在这里插入图片描述

2.HTTP状态错误码

状态错误码的设置用send_error和write_error两个方法来实现
其中send_error用于发送一个错误码,write_error用于处理错误码

首先修改application.py文件,增加error的路由页面:

from views.index import IndexHandler,HomeHandler,ErrorHandler
import tornado.web
import config

class Application(tornado.web.Application):
    def __init__(self):
        handlers=[
            (r'/',IndexHandler),
            (r'/home',HomeHandler),

            # HTTP状态错误码处理
            (r'/error',ErrorHandler)
        ]
        super(Application,self).__init__(handlers,**config.settings)

然后在index.py文件中增加ErrorHandler页面代码:

from tornado.web import RequestHandler

class IndexHandler(RequestHandler):
    def get(self):
        self.write("test")

class HomeHandler(RequestHandler):
    def get(self):
        self.write("test:Home")

# HTTP状态错误码处理
class ErrorHandler(RequestHandler):
    def write_error(self, status_code, **kwargs):
        if(status_code==500):
            self.write("服务器内部错误")
        elif status_code==404:
            self.write("资源不存在")
        else:
            self.write("未知错误")

    def get(self, *args, **kwargs):
        flag=self.get_query_argument("flag")
        if flag=='0':
            self.send_error(500)
        self.write("right page")
  • 首先通过URL地址获取flag的信息
  • 这里设置flag=0时转向错误页面,否则页面正常,输出“right page”标志
  • flag=0时,通过self.send_error方法将错误码(这里是500)传至write_error方法中,然后write_error针对传进来的错误码进行处理
  • flag等于其他值时,不会跳转到其他页面,会输出“right page”标志

运行结果:

在浏览器中输入:localhost:8888/error?flag=1 时,显示:
在这里插入图片描述
在浏览器中输入:localhost:8888/error?flag=0 时显示:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值