美文网首页
Tornado实战-环境搭建

Tornado实战-环境搭建

作者: Python野路子 | 来源:发表于2018-07-25 00:45 被阅读0次

    虚拟环境相关操作

    #创建虚拟环境
    mkvirtualenv tornadoenv  #创建一个名为tornadoenv的虚拟环境,但是这个虚拟环境的python版本为系统的python版本
    mkvirtualenv -p /usr/bin/python3  tornadoenv #指定路径/usr/bin/python3下创建一个 tornadoenv的虚拟环境
    
    #退出当前虚拟环境
    deactivate
    #进入名tornadoenv的虚拟环境 
    workon tornadoenv  
    #当前虚拟环境所安装的包
    pip freeze 
    #查看当前python的版本(未进入虚拟环境时显示的是系统的python版本)
    python -V 
    #当前python所在的路径
    which python 
    echo $PATH  #执行路径
    

    pycharm远程配置

    此过程在Django中叙述过,此处省略

    项目文件结构

    image.png

    相关代码

    app.py

    import tornado.ioloop   #开启循环,让服务一直等待请求的到来
    import tornado.web      #web服务基本功能都封装在此模块中
    import tornado.options  #从命令行中读取设置
    from tornado.options import define,options  #导入包
    
    from handlers import main
    
    define('port',default='8080',help='Listening port',type=int) #定义如何接受传进来的东西
    
    
    class Application(tornado.web.Application):  #引入Application类,重写方法,这样做的好处在于可以自定义,添加另一些功能
        def __init__(self):
            handlers = [
                (r'/',main.IndexHandler),
                (r'/explore',main.ExploreHandler),
                (r'/post/(?P<post_id>[0-9]+)',main.PostHandler) #命名组写法,使用关键字,路由与handler方法不一定顺序一致
            ]
            settings = dict(
                debug = True, #调试模式,修改后自动重启服务,不需要自动重启,生产情况下切勿开启,安全性
                template_path = 'templates', #模板文件目录
                static_path = 'static'  #静态文件目录
            )
    
            super(Application,self).__init__(handlers,**settings) #用super方法将父类的init方法重新执行一遍,然后将handlers和settings传进去,完成初始化
    
    
    app = Application() #实例化
    
    
    if __name__ == '__main__':   #当.py文件被直接运行时,代码块将被运行;当.py文件以模块形式被导入时,代码块不被运行。
    
        tornado.options.parse_command_line()
        app.listen(options.port)  ##如果一个与define语句中同名的设置在命令行中被给出,那么它将成为全局的options的一个属性 即 options.port 相当于define的url的port
        print("Server start on port {}".format(str(options.port)))  #提示服务启动占用端口
        tornado.ioloop.IOLoop.current().start()   #执行ioloop
    

    main.py

    import tornado.web
    
    class IndexHandler(tornado.web.RequestHandler):
        """
         Home page for user,photo feeds 主页----用户,照片提要
        """
        def get(self,*arg,**kwargs):
            self.render('index.html') #打开index.html网页
    
    
    class ExploreHandler(tornado.web.RequestHandler):
        """
        Explore page,photo of other users 浏览页面和其他用户的照片
        """
        def get(self,*arg,**kwargs):
            self.render('explore.html')
    
    class PostHandler(tornado.web.RequestHandler):
        """
        Single photo page and maybe 单独的照片页
        """
        def get(self,post_id):
            self.render('post.html',post_id = post_id)   #根据正则输入的内容,接收到,打开相应的图片
    

    base.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>{% block title%}Tornado Title{% end %}</title>
    </head>
    <body>
    {% block content %}base content{% end %}
    </body>
    </html>
    

    index.html

    {% extends 'base.html' %} #继承base.html
    
    {% block title %} index page {% end %}
    
    {% block content %}index content {% end %}
    

    explore.html

    {% extends 'base.html' %}
    
    {% block title %} explore page {% end %}
    
    {% block content %} explore content {% end %}
    

    post.html

    {% extends 'base.html' %}
    
    {% block title %} post page {% end %}
    
    {% block content %} post of {{post_id}} content {% end %} #获取post_id并write到网页
    
    

    效果

    image.png
    image.png

    相关文章

      网友评论

          本文标题:Tornado实战-环境搭建

          本文链接:https://www.haomeiwen.com/subject/lqeumftx.html