tornadobasic

# 万能问题解决(提示)键ALT+ENTER
'''
创建Tornado服务器
'''
import tornado
from tornado.httpserver import HTTPServer
from tornado.ioloop import IOLoop
from tornado.options import define, parse_config_file, options
from tornado.web import Application, RequestHandler


# 继承自RequestHandler类
# 对请求的方式(get/post)调用重写父类的get/post方法做出响应
class IndexHandler(RequestHandler):
    def get(self,*args,**kwargs):
        # 服务器就是一个字符串
        # 浏览器解析就是一个a标签,超链接
        self.write('<a href=/python>Hello Python</a><br>')
        self.write('<a href=/java>Hello Java</a>')
    def post(self,*args,**kwargs):
        pass

class PythonHandler(RequestHandler):
    def get(self,p1=None,p2=None,*args,**kwargs):
        self.write('人生苦短,我用Python!'+'<br>')
        if p1:self.write('data:'+p1+'<br>')
        if p2:self.write(('subject:'+p2))

    def post(self,*args,**kwargs):
        pass

class JavaHandler(RequestHandler):
    def get(self, p1=None,p2=None,*args, **kwargs):
        self.write('Java在手,天下我有!'+'<br>')
        if p1:self.write('data:'+p1+'<br>')
        if p2:self.write('subject:'+p2)

    def post(self, *args, **kwargs):
        pass


# 对程序中可能经常变化的值应该提取到配置文件中
# 创建文件夹在文件夹下创建file,充当配置文件

define('duankou',type=int,default=8888)
# 当前文件所在文件夹的上一个(mytornado)下的config/config
parse_config_file('../config/config')

# 创建Application对象
# Application是Tornado最核心的类
# 所有关于服务器的配置信息都要写在Application构造器中
# 以构造器的参数形式传入
# 比如:路由列表
# 路由列表的作用告诉Tornado,对特定路径的请求,
# 由哪个类进行响应



app = Application([('/',IndexHandler),
                   ('/python',PythonHandler),
                   ('/python/([0-9a-zA-Z]+)',PythonHandler),
                   ('/python/([0-9a-zA-Z]+)/([a-zA-Z]+)',PythonHandler),
                   ('/java',JavaHandler),
                   ('/java/([0-9a-zA-Z]+)',JavaHandler),
                   ('/java/([0-9a-zA-Z]+)/([a-zA-Z]+)',JavaHandler)])
# 创建真正的服务器程序
server = HTTPServer(app)
# 让服务器监听某一个端口(端口号是一个int,原则上不小于10000)
server.listen(options.duankou)
# 当前线程中启动服务器
IOLoop.current().start()

1.. 如果对路由列表中不存在的路径发起请求,会得到404:Not Found

2.. Python中,带有HTML标签的字符串也仅仅是一个普通的字符串.
但是将这样的字符串作为服务器的响应交给客户端时,客户端会进行解析,
渲染后呈现给用户.客户端(浏览器)会根据HTML标签做不同的渲染处理.

  1. 可以利用正则表达式匹配具有一定规律性的所有的路径.
    路径的具体内容会以参数的形式传入get/post方法,参数名称可以随意指定,
    但是最好给参数指定默认值,一般默认值为None
    例如:
    (‘/python’,xxHandler),
    (‘/python/([0-9a-zA-Z]+)’,xxHandler),
    (‘/python/([0-9a-zA-Z]+)/([a-zA-Z]+)’,xxHandler)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值