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/

  • 相关阅读:
    redis在Linux的下载和安装
    redis 安装启动及设置密码windows
    Lambda学习---方法引用和其他基本应用
    Lambda学习---StreamApi使用
    java对象的访问定位
    java对象是如何创建的
    通过“减少内存”的方式解决内存溢出的问题
    springmvc配置中,mapper一直依赖注入不进去的问题记录
    为什么要简化代码书写
    压力测试工具
  • 原文地址:https://www.cnblogs.com/Erick-L/p/7079870.html
Copyright © 2011-2022 走看看