zoukankan      html  css  js  c++  java
  • Tornado 网站demo 三

    模板

    修改index.py

    #!/usr/bin/env Python
    # coding=utf-8
    
    import tornado.web
    import methods.readdb as mrd
    
    class IndexHandler(tornado.web.RequestHandler):
        def get(self):
            usernames = mrd.select_columns(table="users",column="username")
            one_user = usernames[0][0]
            self.render("index.html", user=one_user)
    
        def post(self):
            username = self.get_argument("username")
            password = self.get_argument("password")
            user_infos = mrd.select_table(table="users",column="*",condition="username",value=username)
            if user_infos:
                db_pwd = user_infos[0][2]
                if db_pwd == password:
                    self.write("welcome you: " + username)
                else:
                    self.write("your password was not right.")
            else:
                self.write("There is no thi user.")

    readdb.py 添加select_columns 方法

    def select_columns(table, column ):
        sql = "select " + column + " from " + table
        cur.execute(sql)
        lines = cur.fetchall()
        return lines

    修改index.html文件

    <!DOCTYPE html>
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1" />
        <title>Learning Python</title>
    </head>
    
    <body>
        <h2> 登录页面</h2>
        <p>用用户名为:{{user}}登录</p>
        <form method="POST">
            <p><span>UserName:</span><input type="text" id="username"/></p>
            <p><span>Password:</span><input type="password" id="password" /></p>
            <p><input type="BUTTON" value="登录" id="login" /></p>
        </form>
    <script src="{{static_url('js/jquery-3.2.1.min.js')}}"></script>
    <script src="{{static_url('js/script.js')}}"></script>
    </body>

    要求用户正确登录之后,跳转到另外一个页面,并且在那个页面中显示出用户的完整信息。

     先修改 url.py 文件,在其中增加一些内容

    #!/usr/bin/env Python
    # coding=utf-8
    """
    the url structure of website
    """
    
    #!/usr/bin/env Python
    # coding=utf-8
    """
    the url structure of website
    """
    
    from handlers.index import IndexHandler
    from handlers.user import UserHandler
    
    url = [
        (r'/', IndexHandler),
        (r'/user', UserHandler),
    ]

    然后就建立 handlers/user.py 文件

    #!/usr/bin/env Python
    # coding=utf-8
    
    import tornado.web
    import methods.readdb as mrd
    
    class UserHandler(tornado.web.RequestHandler):
        def get(self):
            username = self.get_argument("user")
            user_infos = mrd.select_table(table="users",column="*",condition="username",value=username)
            self.render("user.html", users = user_infos)

    修改script.js

    /**
     * Created by fulong on 2017/6/14.
     */
    $(document).ready(function(){
        $("#login").click(function(){
            var user = $("#username").val();
            var pwd = $("#password").val();
            var pd = {"username":user, "password":pwd};
            $.ajax({
                type:"post",
                url:"/",
                data:pd,
                cache:false,
                success:function(data){
                    window.location.href = "/user?user="+data;
                },
                error:function(){
                    alert("error!");
                },
            });
        });
    });

    user.html 模板

    <!DOCTYPE html>
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1" />
        <title>Learning Python</title>
    </head>
    <body>
        <h2>Your informations are:</h2>
        <ul>
            {% for one in users %}
                <li>username:{{one[1]}}</li>
                <li>password:{{one[2]}}</li>
                <li>email:{{one[3]}}</li>
            {% end %}
        </ul>
    </body>

     模版中

        {% set website = "<a href='http://www.itdiffer.com'>welcome to my website</a>" %}
        {{ website }}

    需要更改成如下方式完成 不转义,因为模版会自动帮转义

    {% raw website %}

    模版中备查函数

    • escape(s):替换字符串 s 中的 &、<、> 为他们对应的 HTML 字符。
    • url_escape(s):使用 urllib.quote_plus 替换字符串 s 中的字符为 URL 编码形式。
    • json_encode(val):将 val 编码成 JSON 格式。
    • squeeze(s):过滤字符串 s,把连续的多个空白字符替换成一个空格。

    cookies

    生成安全的密钥

    >>> import base64, uuid
    >>> base64.b64encode(uuid.uuid4().bytes)
    'w8yZud+kRHiP9uABEXaQiA=='

    如果要获取此 cookie,用 self.get_secure_cookie(username) 即可。

    实例:https://emptysqua.re/blog/refactoring-tornado-coroutines/

  • 相关阅读:
    优化SQL查询:如何写出高性能SQL语句
    提高SQL执行效率的16种方法
    Spring Ioc DI 原理
    java内存泄漏
    转:js闭包
    LeetCode Best Time to Buy and Sell Stock III
    LeetCode Best Time to Buy and Sell Stock with Cooldown
    LeetCode Length of Longest Fibonacci Subsequence
    LeetCode Divisor Game
    LeetCode Sum of Even Numbers After Queries
  • 原文地址:https://www.cnblogs.com/Erick-L/p/7079870.html
Copyright © 2011-2022 走看看