自动化创建tornado项目

tornado目录结构:

index.py             入口文件

app               app目录

  |___  __init__.py      初始化脚本

  |___  templates        模板目录

  |          |___ index.html  模板

  |___  static          静态目录

  |___  configs.py       配置文件

    |___  urls.py        路由规则

  |___  home        视图目录

  |     |___ __init__.py  初始化文件

  |___  view.py        视图脚本

  

引用视频教程:http://study.163.com/course/courseLearn.htm?courseId=1003852044#/learn/video?lessonId=1004567012&courseId=1003852044

如下代码还有部分问题未解决,会抓紧调试

import os
os.system('pip3 install -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com fabric')
os.system('pip3 install -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com tornado')
from fabric.api import *
from fabric.colors import *

def index_py_s():
    content = """#coding:utf8
from app import app
if __name__ == "__main__":
    app()
"""

    return content

def server_py_s(port):
    content = """#coding:utf8
import tornado.web
import tornado.ioloop
import tornado.options
import tornado.httpserver

from tornado.options import options,define
from configs import configs
from urls import urls
define('port',default=%d,type=int)

class CustomAppLication(tornado.web.Application):
    def __init__(self,configs,urls):
        settings = configs
        handlers = urls
        super(CustomApplication,self).__init__(handlers=handlers,**settings)
def create_app():
    tornado.options.parse_command_line()
    http_server = tornado.httpserver.HTTPServer(CustomApplicantion(configs,urls))
    http_server.listen(options.port)
    tornado.ioloop.IOLloop.instance().start()
app = create_app
    """ % int(port)
    return content
def urls_py_s():
    content = """#coding:utf8
from home.views import IndexHandler as home_index

urls = [
    (r"/",home_index)]
    """
    return content

def configs_py_s():
    import uuid
    content = """#coding:utf8
import os
root = os.path.dirname(__file__)
configs = dict(
    template_path = os.path.join(root,'templates'),
    static_path = os.path.join(root,'static'),
    debug = True,
    xscrf_cookies = True,
    cookie_secret = '%s'
    )
    """%str(uuid.uuid4().hex)

    return content

def views_py_s():
    content = """#coding:utf8
import tornado.web

class IndexHandler(tornado.web.RequetHandler):
    def get(self):
        self.render('index.html',title = 'hello world !')
    """
    return content

def index_html_s():
    content = """
    <h1>{{ title }}<h1>
    """
    return content 


@task
def mk_web():
    dir_name = prompt(green('please input project name:'))
    local('mkdir %s' % dir_name)
    with lcd(dir_name):
        local('touch index.py')
        local("echo '%s' >> index.py" % index_py_s())
        local('mkdir app')
        with lcd ('app'):
            local('touch __init__.py')
            port = prompt(cyan('please input project port:'))
            local("echo '%s' >> __init__.py" % server_py_s(port))
            local('touch urls.py')
            local("echo '%s' >> urls.py" % urls_py_s())
            local('touch configs.py')
            local("echo '%s'>> configs.py" % configs_py_s())
            local('mkdir home')
            with lcd('home'):
                local('touch __init__.py')
                local('touch views.py')
                local("echo '%s' >> views.py" % views_py_s())
            local('mkdir templates')
            with lcd('templates'):
                local('touch index.html')
                local("echo '%s' >> index.html" % index_html_s())
            local('mkdir static')

        local('python3 index.py')
if __name__ == '__main__':
    execute(mk_web)

猜你喜欢

转载自www.cnblogs.com/jackyzm/p/9120201.html