Tornado-第一篇-搭建网页

  manage.py

from tornado.ioloop import IOLoop  # 处理I/O
from tornado.web import RequestHandler  # 处理请求
from tornado.web import Application  # 实例化APP网页

USER_DICT = {
    '1': {'name': '金超', 'age': '22'},
    '2': {'name': '小可', 'age': '42'},
    '3': {'name': '小鱼', 'age': '32'},
    '4': {'name': '小狗', 'age': '52'},
}


# 中间件用于验证是否登录
class AuthHandler(object):
    def prepare(self):
        # name = self.get_cookie('xxxxx')  #与Django方法做对比
        name = self.get_secure_cookie('xxxxx')
        if not name:
            self.redirect('/login')


# home页面  要先继承AuthHandler
class HomeHandler(AuthHandler, RequestHandler):
    def get(self, *args, **kwargs):
        self.render('index.html', user_dict=USER_DICT, num=[11, 22, 33])


# index主页面
class IndexHandler(AuthHandler, RequestHandler):
    def get(self, *args, **kwargs):
        # 用user_dict带入参数传给页面
        self.render('index.html', user_dict=USER_DICT, num=[11, 22, 33])


# login登录页面函数
class LoginHandler(RequestHandler):
    def get(self, *args, **kwargs):
        self.render('login.html', error='')

    def post(self, *args, **kwargs):
        # Tornado和Django做类比
        # self.get_query_argument('user')         request.GET.get('user')
        # self.get_query_arguments('user')        request.GET.getlist('user')
        # self.get_body_argument('user')          request.POST.get('user')
        # self.get_body_arguments('user')         request.POST.getlist('user')
        user = self.get_body_argument('user')
        pwd = self.get_body_argument('pwd')
        if user == 'alex' and pwd == '123':
            self.set_secure_cookie('xxxxx', user)
            self.redirect('/index')
            return
        self.render('login.html', error='用户名或密码错误')


# 在settings中注册templates和中间件cookie
settings = {
    'template_path': 'templates',
    'cookie_secret': 'asq3wurasldf'
}

# 在Application()方法里面写页面对应着函数
application = Application([
    ('/login', LoginHandler),
    ('/index', IndexHandler),
    ('/home', HomeHandler),
], **settings)

# listen()方法可以监控端口和IP默认是本机
if __name__ == '__main__':
    application.listen(8888)
    IOLoop.instance().start()

  index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>用户列表</h1>
<table>
    <thead>
        <th>ID</th>
        <th>姓名</th>
        <th>年龄</th>
    </thead>
    <thead>
        <!--提取后端字典数据-->
        {% for k,v in user_dict.items() %}
            <tr>
                <td>{{k}}</td>
                <td>{{v['name']}}</td>
                <td>{{v.get('age')}}</td>
            </tr>
        {% end %}
    </thead>
</table>
<ul>
    <!--提取后端列表-->
    {% for item in num %}
        <li>{{item}}</li>
    {% end %}
</ul>
<h2>{{num[1]}}</h2>
</body>
</html>

  login.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <form method="post">
        <input type="text" name="user">
        <input type="text" name="pwd">
        <input type="submit" value="提交">
        <spon style="color: red">{{error}}</spon>
    </form>
</body>
</html>

  

 

 

posted @ 2019-01-15 18:04  weilai小超人  阅读(563)  评论(0编辑  收藏  举报