web框架之tornado

Python Web框架介绍:
tornado: socket,逻辑处理
Django,bottle,flask: 逻辑处理,第三方的模块(包含了socket),jinja2

Models 数据库相关操作
View 模板HTML文件
Controllers 业务逻辑
MVC -> MVC框架

Models 数据库相关操作
Template 模板HTML文件
Views 业务逻辑
MTV -> MTV框架

jinja2 第三方模块:pip install jinja2

Tornado框架:
写:
继承类tornado.web.RequestHandler
定义路由映射 application
启动 application.listen(8888)
配置文件
模板路径

补充:
self.get_argument("xxx") # 获取用户提交的数据
POST
GET
==> GET,URL中传递数据
{% for item in xxxooo %}
<li>{{item}}</li>
{% end %} # 模板语言通过for循环展示数据

模板语言:
{{}}

{% if xxx %}
{% else %}
{% end %} # 必须带end

自定义:
uimethod
uimodule

简单的tornado框架:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import tornado.web
import tornado.ioloop
import uimethod as mt
import uimodule as md

INPUTS_LIST = []


# tornado框架
class MainHandle(tornado.web.RequestHandler):
    # get访问会自动执行post()方法返回数据给客户端,可以通过url传递参数
    def get(self):
        # self.write("Hello, world!")
        # render() 默认从当前目录下找,template_path可以配置模板路径
        # 1.打开index.html文件,读取内容(包含特殊语法)
        # 2.xxxooo = [11,22,33,44] && 读取内容(包含特殊语法)
        # 3.得到新的字符串,返回给用户
        name = self.get_argument("xxx", None)
        if name:
            INPUTS_LIST.append(name)
        self.render("index.html", npm="NPM888", xxxooo=INPUTS_LIST)

    # post访问会自动执行post()方法返回数据给客户端
    # def post(self, *args, **kwargs):
    #     # 获取form表单提交的内容
    #     name = self.get_argument("xxx")
    #     # 将内容更新到页面
    #     INPUTS_LIST.append(name)
    #     self.render("index.html", xxxooo=INPUTS_LIST)


settings = {
    "template_path": "template",  # 模板路径的配置【名字template_path不能改】
    "static_path": "static",  # 静态文件路径的配置【名字static_path不能改】
    # "static_url_prefix": "/sss/"  # 静态文件的前缀,文件还是去static_path里面找,默认不使用
    "ui_methods": mt,
    "ui_modules": md,
}

# 路由映射,路由系统
application = tornado.web.Application([
    (r"/index", MainHandle),
], **settings)

if __name__ == '__main__':
    print(bin(108))

    # socket 运行起来了
    # application.listen(8888)
    # tornado.ioloop.IOLoop.instance().start()

 

static文件代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Index</title>
    <link rel="stylesheet" href="{{static_url('commons.css')}}"/>
</head>
<body>
    <h1>提交内容</h1>
    <form method="get" action="/index">
        <input type="text" name="xxx"/>
        <input type="submit" name="提交"/>
    </form>
    <h1>展示内容</h1>
    <h3>{{npm}}</h3>
    <h3>{{func(npm)}}</h3>
    <h3>{% module custom() %}</h3>
    <ul>
        {% for item in xxxooo %}
            {% if item == "alex" %}
                <li style="color: red;">{{item}}</li>
            {% else %}
                <li >{{item}}</li>
            {% end %}
        {% end %}
    </ul>
    <script type="text/javascript" src="{{static_url('index.js')}}"></script>
</body>
</html>

 

mt文件代码:

#!/usr/bin/env python
# -*- coding:utf-8 -*-


def func(self, arg):
    return arg.lower()

 

md文件index.html代码:

#!/usr/bin/env python
# -*- coding:utf-8 -*-

from tornado.web import UIModule


class custom(UIModule):

    def render(self, *args, **kwargs):
        return "1234567890"

代码运行结果:

 

 
posted @ 2019-03-21 17:32  錦衣夜行  阅读(194)  评论(0编辑  收藏  举报