| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- """
- example03.py - RequestHandler解析
- """
- import os
- import re
- import tornado.ioloop
- import tornado.web
- from tornado.options import define, options, parse_command_line
- # 定义默认端口
- define('port', default=8000, type=int)
- users = {}
- class User(object):
- """用户"""
- def __init__(self, nickname, gender, birthday):
- self.nickname = nickname
- self.gender = gender
- self.birthday = birthday
- class MainHandler(tornado.web.RequestHandler):
- """自定义请求处理器"""
- def get(self):
- # 从Cookie中读取用户昵称
- nickname = self.get_cookie('nickname')
- if nickname in users:
- self.render('userinfo.html', user=users[nickname])
- else:
- self.render('userform.html', hint='请填写个人信息')
- class UserHandler(tornado.web.RequestHandler):
- """自定义请求处理器"""
- def post(self):
- # 从表单参数中读取用户昵称、性别和生日信息
- nickname = self.get_body_argument('nickname').strip()
- gender = self.get_body_argument('gender')
- birthday = self.get_body_argument('birthday')
- # 检查用户昵称是否有效
- if not re.fullmatch(r'\w{6,20}', nickname):
- self.render('userform.html', hint='请输入有效的昵称')
- elif nickname in users:
- self.render('userform.html', hint='昵称已经被使用过')
- else:
- users[nickname] = User(nickname, gender, birthday)
- # 将用户昵称写入Cookie并设置有效期为7天
- self.set_cookie('nickname', nickname, expires_days=7)
- self.render('userinfo.html', user=users[nickname])
- def main():
- """主函数"""
- parse_command_line()
- app = tornado.web.Application(
- handlers=[
- (r'/', MainHandler),
- (r'/register', UserHandler),
- ],
- template_path=os.path.join(os.path.dirname(__file__), 'templates'),
- )
- app.listen(options.port)
- tornado.ioloop.IOLoop.current().start()
- if __name__ == '__main__':
- main()
|