tornado入门

1. 基本九行代码实现Tornado服务器程序

class IndexHandler(RequestHandler):
    def get(self, *args, **kwargs):
        self.write('Hello Tornado')
    def post(self, *args, **kwargs):
        pass

app = Application(handlers=[('/',IndexHandler)])
server = HTTPServer(app)
server.listen(8888)
IOLoop.current().start()

2. 将端口号写到配置文件中

将端口号写入配置文件需要3步:

2.1 定义端口号在配置文件中的名称,类型,默认值

        define('名称',type=int,default=8888)

2.2 解析配置文件

        parse_config_file('配置文件路径')

2.3 读取配置文件中的内容

        options.名称

3. 利用路径的变化请求不同的资源

请求形式:

        curl http://127.0.0.1:8000/java/day3/css

        curl http://127.0.0.1:8000/java/day4

服务器利用正则表达式获取不同路径的内容, 生成不同的响应内容:

        /java/(day[0-9]+)

        /java/(day[0-9]+)/([a-z0-9]+)

4. 利用参数的变化请求不同的资源

  • 以GET方式提交参数

请求形式:

        curl http://127.0.0.1:8000/python?day=day3&subject=css

        curl http://127.0.0.1:8000/python?day=day4

服务器会调用RequestHandler中的相关方法获取请求参数,再根据不同的请求参数进行不同的响应

        #  提供默认值防止用户没有提供该参数时,产生400错误

        self.get_query_argument('参数名称',默认值) 

        # 以列表的形式返回参数值(们),即使用户没有提供该参数, 也不会产生400错误,只会得到一个空列表

        self.get_query_arguments('参数名称')

  • 以POST方式提交参数

服务器会调用RequestHandler中的相关方法获取请求参数,再根据不同的请求参数进行不同的响应.

        # 提供默认值防止用户没有提供该参数时,产生400错误

        self.get_body_argument('参数名称',默认值)

        # 以列表的形式返回参数值(们),即使用户没有提供该参数,也不会产生400错误,只会得到一个空列表

        self.get_body_arguments('参数名称')

RequestHandler中还有两个获取参数的函数

        get_argument() == get_query_argument()+get_body_argument()

        get_arguments() == get_query_arguments()+get_body_arguments()

5. 从一个页面跳转到另一个页面

# redirect跳转时采用的是get方式发起访问

self.redirect('/路径')

6. Tornado的RequestHandler中常用的钩子方法

        set_default_headers:用来设置自定义响应头

        initialize:在get/post方法执行前进行初始化操作(比如获取一些资源)

        get/post:生成真正的响应内容

        on_finish:在get/post方法执行后,进行资源的释放

7. 服务器的响应内容最常见的两种

一种是json字符串

另外一种是HTML页面

8. tornado如何以JSON字符串作为响应内容

第一种方式: 构建一个字典,直接把字典写入缓冲区

        finish方法会帮助我们把字典转为正确JSON字符串推回到客户端/浏览器

第二种方式: 构建一个字典

        利用json.dumps将字典转为一个纯字符串

        手动设置响应头:

                self.set_header('Content-Type', 'application/json;charset=UTF-8')

        设置完毕后把纯字符串写入到缓冲区

9. Tornado如何以真正的HTML页面作为响应内容

第一步:创建一个存放模板/页面的文件夹.

第二步: 在第一步创建的文件夹中,创建作为响应的HTML文件

第三步:配置第一步所创建的文件夹.找到Application,

        传入第二个参数: template_path='第一步创建的文件夹名称'

第四步: 使用第二步创建的HTML文件作为响应

       self.render('文件名称.html')

       render文法实际就是根据第三步配置的路径找到HTML文件,

       将HTML文件内容转为一个纯的字符串,写入缓冲区

       等待finish方法将缓冲区中的字符串推回客户端/浏览器

10. Cookie 和 session

        cookie:服务器写入到浏览器一些键值对。这些键值对会在下次访问服务器时,被浏览器自动提交上来。

        向浏览器写入cookie

                self.set_cookie('cookie1','hellocookie')

        获取cookie

                c1 = self.get_cookie('cookie1')

        session: 用户相关信息存储在服务器,然后向浏览器中写入一个键值对,该键值对就是下一次访问服务器时,找到存储信息的一个’凭证‘

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值