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枚举 用于声明持久化常量 和volley 请求头


下一篇:win10下安装MySQL5.7.20