tornado项目--day01--项目结构以及项目搭建编写
来源:互联网 发布:手机淘宝如何出售二手 编辑:程序博客网 时间:2024/06/03 17:53
一、项目结构:
需求:易维护,可扩展
1、files 配置信息 (docs)
2、handlers 处理逻辑和路由映射 C控制层
3、libs 库文件 做一些中间层的封装 作用:解耦合
4、models 是模型类 M模型层 包括:数据库,文件系统,第三放服务
5、static 放js css html img
6、utils 小工具小组件,比如:验证码生成、IP地址转换
7、templates 放html页面
8、config 配置文件 要有两套 一套给开发用 一套给线上用
9、server 启动文件
10、requirement 所需依赖
二、总体思路
1、创建项目结构文件
2、编写配置文件以及运行文件
3、编写basehandler
4、数据库连接和redis连接编写
5、编写主handler 和main_handler_url
6、创建模板templates/index.html
7、运行python server.py -start 测试
三、目录结构
四、代码部分
所需依赖
appdirs==1.4.3futures==3.1.1netaddr==0.7.19packaging==16.8pbkdf2==1.3Pillow==4.1.0pkg-resources==0.0.0pycket==0.3.0PyMySQL==0.7.11pyparsing==2.2.0qiniu==7.1.2redis==2.10.5requests==2.14.2SQLAlchemy==1.1.9tornado==4.4.3torndb==0.3
1、配置文件
#coding=utf-8settings = dict( template_path='templates', #设置模板路径 static_path='static', #设置静态文件路径 debug=True, #调试模式 cookie_secret='aaaa', #cookie加密方式 login_url='/auth/user_login', #auth 指定默认的路径 xsrf_cookies=True, #防止跨域攻击 #ui_methods=admin_uimethods, #pycket配置信息 pycket={ 'engine': 'redis', 'storage': { 'host': 'localhost', 'port': 6379, 'db_sessions': 5, 'db_notifications': 11, 'max_connections': 2 ** 31, }, 'cookies': { 'expires_days':30, #设置过期时间 #'max_age':5000, } })
2、启动文件
#coding=utf-8import tornado.httpserverimport tornado.webimport tornado.ioloopimport tornado.escapefrom tornado.options import define, optionsfrom config import settingsfrom handlers.main.main_urls import handlers#定义一个默认的接口define("port", default=8000, help="run port",type=int)define("start", default=False, help="start server", type=bool)if __name__ == "__main__": options.parse_command_line() if options.start: app = tornado.web.Application(handlers, **settings) #创建应用实例 http_server = tornado.httpserver.HTTPServer(app) #通过应用实例创建服务器实例 http_server.listen(options.port) #监听端口 print 'start server...' tornado.ioloop.IOLoop.instance().start() #启动服务
3、数据库连接配置
#coding=utf-8from sqlalchemy import create_enginefrom sqlalchemy.ext.declarative import declarative_basefrom sqlalchemy.orm import sessionmaker# 连接数据库的数据HOSTNAME = '192.168.169.138'PORT = '3306'DATABASE = 'tornado_pro'USERNAME = 'developer'PASSWORD = '123456'# DB_URI的格式:dialect(mysql/sqlite)+driver://username:password@host:port/database?charset=utf8DB_URI = 'mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8'.format(USERNAME, PASSWORD, HOSTNAME, PORT, DATABASE )# 1创建一个engine引擎engine = create_engine(DB_URI, echo=False )# 2sessionmaker生成一个session类Session = sessionmaker(bind=engine)# 3创建一个session实例dbSession = Session()# 4创建一个模型基类Base = declarative_base(engine)
4、redis连接
#coding=utf-8import redisconn = redis.Redis()
5、初始化 BaseHandler
1、继承tornado.web.RequestHandler, SessionMixin2、创建数据库和redis的连接实例3、重写方法get_current_user(self) 如果要使用authenticated方法4、清除连接实例中的数据#coding=utf-8import tornado.escapefrom libs.pycket.session import SessionMixinfrom libs.db.dbsession import dbSessionfrom libs.redis_conn.redis_conn import connfrom models.account.account_user_model import Userusers = { 'user': User}class BaseHandler(tornado.web.RequestHandler, SessionMixin): def initialize(self): #初始化连接 db为mysql的数据库连接实例 conn为redis的连接实例 self.db=dbSession self.conn=conn def get_current_user(self): #重写方法 如果要使用authenticated方法 """获取当前用户""" username = self.session.get("user_name") if username: user = users[username['user_tablename']].by_id(username['user_id']) return user if user else None else: return None def on_finish(self): #清除连接中的数据 self.db.close()
6、编写main_handler
#coding=utf-8import tornado.webfrom handlers.base.base_handler import BaseHandlerclass MainHandler(BaseHandler): @tornado.web.authenticated def get(self): self.render('index.html')
7、编写main_handler_url
from main_handler import MainHandlerhandlers = [ (r'/',MainHandler),]
阅读全文
0 0
- tornado项目--day01--项目结构以及项目搭建编写
- Android-项目结构-day01
- tornado企业级开发项目搭建
- 一个tornado项目的大体结构
- tornado 1、项目结构初入
- 项目day01-1
- Android项目结构搭建
- 项目工程结构搭建
- Django|Tornado项目部署
- 一个不知名的项目---Day01
- Android项目结构搭建详解
- Android项目结构 以及体系结构
- Android项目结构 以及体系结构
- SSM综合项目实战(TTSC) -- day01 项目介绍、工程搭建
- django tornado开源项目
- 部署项目Nginx+Tornado+Supervisor
- struts2+hibernate3+spring3项目快速开发(图文)之3:搭建项目结构(分包、类实现、方法编写)
- 项目结构
- Function
- IP协议
- Java高并发秒杀系统(一)
- 为什么客户端不需要绑定IP地址和端口号
- html5移动网页自适应手机屏幕的meta写法
- tornado项目--day01--项目结构以及项目搭建编写
- 多项式的幂运算
- 漫画告诉你什么是《屎一样的代码》?
- QQ互联官网使用跳坑
- Android的设计模式-模板方法模式
- 101. Symmetric Tree
- mongodb,redis,hbase 三者都是nosql数据库,他们的最大区别和不同定位
- python列表的11种方法
- 图解Nosql(HBase)与传统数据库的区别