Tornado---知识点

1.引用静态资源

<!-- 首先, 我们要在application设置static_path, 这样就等于告诉了tornado, 我们的静态文件去哪里找。
    也就是把静态文件的根目录告诉了tornado. 这个时候, 假设我们的静态文件放在static目录下 -->
class Application(tornado.web.Application):
    def __init__(self):
        handlers = [
            (r"/ws", WSHandler),
        ]
        settings = dict(
            template_path=os.path.join(os.path.dirname(__file__), "templates"),
            static_path=os.path.join(os.path.dirname(__file__), "static"),
        )

<!-- 第二步, 你要在请求的时候使用/static/这个前缀. 比如 /static/img/test.png , 
     也就是test.png文件是放在/static/img下的 -->
<!-- 1.直接使用:localhost:8000/static/***/*** -->
<!-- 附加:第一个/意味着路径已经到了localhost:8000了 -->
<img class="integral_icon"  src="/static/imgs/jf.png" />
<img class="integral_icon"  src="{{ static_url('imgs/jf.png') }}" />

<link rel="stylesheet"  href="/static/css/entry.css" />
<link rel="stylesheet"  href="{{ static_url('css/entry.css') }}" />

<script type="text/javascript"  src="/static/js/my_socket.js"></script>
<script type="text/javascript"  src="{{ static_url('js/my_socket.js') }}"></script>
<!-- 静态资源的引用,如下左图 -->
<!-- 普通资源的引用,如下右图 -->
<!-- img文件与该文件属于同一级别:该文件是test项目下面的index.html文件 -->
<img src="img/hfzt.png" />
<img src="./img/hfzt.png" />
<!-- img文件与该文件属于父子级别:该文件是html文件下面的index.html文件 -->
<img src="../img/hfzt.png" />

                             

1.一般来讲前两步骤基本就解决我们的静态文件访问内容了.但是如果你是和前端协助的话, 这样每一次都要改路径. 都要硬编码在html文件中, 或者加上{{static_url('')}}。这样很烦, 也很容易出错。
2.这个时候, 我们就要使用tornado的一个预定义的handler--------tornado.web.StaticFileHandler, 这个handler能够极大的方便我们访问到我们的静态文件. 
3.只要在路由里这么写.
  #静态文件
  URLSpec(r"/static/(.*)", StaticFileHandler, {"path": config.STATIC_PATH}),
  URLSpec(r"/css/(.*)", StaticFileHandler, {"path": config.CSS_URL}),
  URLSpec(r"/js/(.*)", StaticFileHandler, {"path": config.JS_URL}),
  URLSpec(r"/img/(.*)", StaticFileHandler, {"path": config.IMG_URL}),
这里的
  config.STATIC_PATH = "/static"
  config.CSS_URL = "/static/css"
  config.JS_UR = "/static/js"
  config.IMG_URL = "/static/img"
是你的自己设定的目录, 
这样每一次访问/css/....这样的资源的时候, 都会定向到/static/css这个路径下寻找。这样你前端拿过来的代码都不用修改了。

2.页面跳转传参

<!-- 1.页面跳转 -->
<a href="/admin/sysuser/{{ u.get('_id') }}">点我跳转</a>
<a href="/admin/sysuser?page=6">点我跳转</a>

<!-- 2.到url -->
(r"/admin/sysuser/([0-9a-z]{24})", AdminModifySysUser),
(r"/admin/sysuser", AdminSysUsers),

<!-- 3.到实现类(即py文件),进而返回一个页面 -->
class AdminModifySysUser(BaseHandler):
    @BaseHandler.admin_authed
    def get(self, id):
        record = self.db.tb_system_user.find_one({"_id":ObjectId(id)})
        return self.render("backend/system_user_modify.html", user=record)

class AdminSysUsers(BaseHandler):
    @BaseHandler.admin_authed
    def get(self):
        datas = self.request.arguments
        current_page = int(self.get_argument("page", 1))
        self.render("backend/system_user_query.html", myuser=self.admin, admin_nav=21, users=user_list,)
<!-- 1.js页面跳转 -->
<script>
    var id = $("#bind").data("dt");
    var phone = $("#bind").data("user");
    window.location.href = "/exam/test/"+id;
    window.location.href = "/exam/achievement?id="+id+"&phone="+phone;
</script>


<!-- 2.到url -->
(r"/exam/test/([0-9a-z]{24})", ExamTest),
(r"/exam/achievement", ExamAchievement),
<!-- http://127.0.0.1:8088/exam/test/5af43bda1d41c80e655cc579 -->
<!-- http://127.0.0.1:8088/exam/achievement?id=5af43bda1d41c80e655cc579&phone=16620815425 -->


<!-- 3.到实现类(即py文件),进而返回一个页面 -->
class ExamTest(BaseHandler):
    @BaseHandler.admin_authed
    def get(self, id):
        print "+++=== ", id
        phone = self.get_cookie("username")
        id = id.encode("utf-8")
        self.render("frontend/page/exam/test.html", phone=phone, id=id)

class ExamAchievement(BaseHandler):
    @BaseHandler.admin_authed
    def get(self):
        id = self.get_argument("id", "")
        phone = self.get_argument("phone", "")
        task = self.db.tb_exam_task.find_one({"_id": ObjectId(id)})
        arr = task.get("participants", [])
        self.render("frontend/page/exam/achievement.html", arr=arr, phone=phone)

3.Cookie的用法:

4.json_encode编码 和json_decode解码:

5.加密与解密:

from passlib.hash import pbkdf2_sha512

# 对love字符串进行加密,love是明文。
password_hash = pbkdf2_sha512.encrypt("love")
print password_hash      # 结果:$pbkdf2-sha512$25000$wnjvvdf6XytFyHlPyVkLAQ$2kL4UztPbWoQmblT4TRxOUoCiDNYvSwGd1EYOWcqhrYUpH9MXHfzaFFw3fGyRsfIZy8SDlXD1HP2U4AlIsdBTA

# 对love字符串进行验证,love是明文,password_hash是密文。
rs = pbkdf2_sha512.verify("love", password_hash)
print rs                 # 结果:True   

6.

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值