美文网首页
tornado-参数处理

tornado-参数处理

作者: 零_WYF | 来源:发表于2017-12-22 21:45 被阅读133次

    1.tornado程序的参数处理【表单操作】【参数传递】【模板语法】

    demo.py

    """
        tornado程序的参数处理
        【表单操作】【参数传递】【模板语法】
    """
    
    # 引入需要的模板
    from tornado.web import Application, RequestHandler
    from tornado.ioloop import IOLoop
    from tornado.httpserver import HTTPServer
    from tornado.options import define, options, parse_command_line
    import os
    
    # 定义端口变量
    define("port", default=8000, help="默认端口8000")
    
    
    # 定义视图处理类
    class IndexHandler(RequestHandler):
        def get(self, *args, **kwargs):
            user = {"name": "零"}
            self.render("index.html", user=user,books=None)
    
    
    # 定义视图处理类---参数操作
    class ParamsHandler(RequestHandler):
        def get(self):
            name = self.get_argument("name")
            books = self.get_arguments("books")
            user = {"name": name}
            self.render("index.html", user=user,books=books)
    
        def post(self):
            name = self.get_argument("name2")
            books = self.get_arguments("books")
            user = {"name": name}
            self.render("index.html", user=user,books=books)
    
    
    
    # 定义程序入口
    if __name__ == "__main__":
        parse_command_line()
        BASE_DIR = os.path.dirname(__file__)
        # 构建web app
        app = Application(
            [
                (r'/', IndexHandler),
                (r'/params', ParamsHandler),
            ],
            # 项目配置信息
            template_path=os.path.join(BASE_DIR, "templates"),
            statc_path=os.path.join(BASE_DIR, "static"),
            debug=True,
        )
        # 部署
        server = HTTPServer(app)
        server.listen(options.port)
    
        # 启动事件轮询监听
        IOLoop.current().start()
    
    注意:

    get和post接收参数的方式有其特有的方式也有公共的方式

    # get特有的接受参数方式
        name = self.get_query_argument("name")
    # 通用接受参数方式
        name = self.get_argument("name")
    
    
    # post特有的接受参数方式
        name= self.get_body_argument("name2")
    # 通用接受参数方式
        name = self.get_argument("name2")
    

    index.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>主页</title>
    </head>
    <body>
    <h1>这里是主页</h1>
    <h3>{{user}}==={{user['name']}}</h3>
    {% if books %}
        {% for book in books %}
            <p><a href="#"> 书名:《{{book}}》 </a> </p>
        {% end %}
    {% else %}
        <p>没有图书</p>
    {% end %}
    
    <hr>
    <form action="/params" method="get">
        姓名:<input type="text" name="name" id="name">
        选择:<input type="checkbox" name="books" id="book1" value="战马">战马
        <input type="checkbox" name="books" id="book2" value="下一场战争">下一场战争
        <input type="checkbox" name="books" id="book3" value="追击红十月号">追击红十月号
        <input type="checkbox" name="books" id="book4" value="兵法">兵法
        <input type="submit" value="get提交">
    </form>
    <br>
    <form action="/params" method="post">
        昵称:<input type="text" name="name2" id="name2">
        选择:<input type="checkbox" name="books" id="book11" value="战马">战马
        <input type="checkbox" name="books" id="book22" value="下一场战争">下一场战争
        <input type="checkbox" name="books" id="book33" value="追击红十月号">追击红十月号
        <input type="checkbox" name="books" id="book44" value="兵法">兵法
        <input type="submit" value="post提交">
    </form>
    
    </body>
    </html>
    
    注意:tornado的(模板语法jinjia2模板语法)和Django的(DTL)类似,但更加强大!

    jinjia2模板语法可以在网页中进行运算
    例如:

    {{book['price'] * book['buycount']}}
    

    相关文章

      网友评论

          本文标题:tornado-参数处理

          本文链接:https://www.haomeiwen.com/subject/afnxgxtx.html