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/

  • 相关阅读:
    java+opencv实现图像灰度化
    java实现高斯平滑
    hdu 3415 单调队列
    POJ 3368 Frequent values 线段树区间合并
    UVA 11795 Mega Man's Mission 状态DP
    UVA 11552 Fewest Flops DP
    UVA 10534 Wavio Sequence DP LIS
    UVA 1424 uvalive 4256 Salesmen 简单DP
    UVA 1099 uvalive 4794 Sharing Chocolate 状态DP
    UVA 1169uvalive 3983 Robotruck 单调队列优化DP
  • 原文地址:https://www.cnblogs.com/Erick-L/p/7079870.html
Copyright © 2011-2022 走看看