zoukankan      html  css  js  c++  java
  • python部分笔记

    1. 创建类和对象

     

    图片转在自:https://www.cnblogs.com/aylin/p/5547558.html

     

    图片转在自:https://www.cnblogs.com/aylin/p/5547558.html

     

    图片转在自:https://www.cnblogs.com/aylin/p/5547558.html

     

      

     

    接下来学习tornado

    http://shouce.jb51.net/tornado/ch1.html#ch1-1-1 //学习网址

    我是直接用得pycharm装上就好

    import tornado.httpserver
    import tornado.ioloop
    import tornado.options
    import tornado.web

    from tornado.options import define, options
    define("port", default=8000, help="run on the given port", type=int)

    class IndexHandler(tornado.web.RequestHandler):
        def get(self):
            greeting = self.get_argument('greeting', 'Hello')
            self.write(greeting + ', friendly user!')

    if __name__ == "__main__":
        tornado.options.parse_command_line()
        app = tornado.web.Application(handlers=[(r"/", IndexHandler)])
        http_server = tornado.httpserver.HTTPServer(app)
        http_server.listen(options.port)
        tornado.ioloop.IOLoop.instance().start()

    halloword的的代码

    代码解读://这里来自教程

    编写一个Tornado应用中最多的工作是定义类继承Tornado的RequestHandler类。在这个例子中,我们创建了一个简单的应用,在给定的端口监听请求,并在根目录("/")响应请求。

    你可以在命令行里尝试运行这个程序以测试输出:

    $ python hello.py --port=8000

    现在你可以在浏览器中打开http://localhost:8000,或者打开另一个终端窗口使用curl测试我们的应用:

    $ curl http://localhost:8000/
    Hello, friendly user!
    $ curl http://localhost:8000/?greeting=Salutations
    Salutations, friendly user!

    让我们把这个例子分成小块,逐步分析它们:

    import tornado.httpserver
    import tornado.ioloop
    import tornado.options
    import tornado.web

    在程序的最顶部,我们导入了一些Tornado模块。虽然Tornado还有另外一些有用的模块,但在这个例子中我们必须至少包含这四个模块。

    from tornado.options import define, options
    define("port", default=8000, help="run on the given port", type=int)

    Tornado包括了一个有用的模块(tornado.options)来从命令行中读取设置。我们在这里使用这个模块指定我们的应用监听HTTP请求的端口。它的工作流程如下:如果一个与define语句中同名的设置在命令行中被给出,那么它将成为全局options的一个属性。如果用户运行程序时使用了--help选项,程序将打印出所有你定义的选项以及你在define函数的help参数中指定的文本。如果用户没有为这个选项指定值,则使用default的值进行代替。Tornado使用type参数进行基本的参数类型验证,当不合适的类型被给出时抛出一个异常。因此,我们允许一个整数的port参数作为options.port来访问程序。如果用户没有指定值,则默认为8000。

    class IndexHandler(tornado.web.RequestHandler):
        def get(self):
            greeting = self.get_argument('greeting', 'Hello')
            self.write(greeting + ', friendly user!')

    这是Tornado的请求处理函数类。当处理一个请求时,Tornado将这个类实例化,并调用与HTTP请求方法所对应的方法。在这个例子中,我们只定义了一个get方法,也就是说这个处理函数将对HTTP的GET请求作出响应。我们稍后将看到实现不止一个HTTP方法的处理函数。

    greeting = self.get_argument('greeting', 'Hello')

    Tornado的RequestHandler类有一系列有用的内建方法,包括get_argument,我们在这里从一个查询字符串中取得参数greeting的值。(如果这个参数没有出现在查询字符串中,Tornado将使用get_argument的第二个参数作为默认值。)

    self.write(greeting + ', friendly user!')

    RequestHandler的另一个有用的方法是write,它以一个字符串作为函数的参数,并将其写入到HTTP响应中。在这里,我们使用请求中greeting参数提供的值插入到greeting中,并写回到响应中。

    if __name__ == "__main__":
        tornado.options.parse_command_line()
        app = tornado.web.Application(handlers=[(r"/", IndexHandler)])

    这是真正使得Tornado运转起来的语句。首先,我们使用Tornado的options模块来解析命令行。然后我们创建了一个Tornado的Application类的实例。传递给Application__init__方法的最重要的参数是handlers。它告诉Tornado应该用哪个类来响应请求。马上我们讲解更多相关知识。

    http_server = tornado.httpserver.HTTPServer(app)
    http_server.listen(options.port)
    tornado.ioloop.IOLoop.instance().start()

    从这里开始的代码将会被反复使用:一旦Application对象被创建,我们可以将其传递给Tornado的HTTPServer对象,然后使用我们在命令行指定的端口进行监听(通过options对象取出。)最后,在程序准备好接收HTTP请求后,我们创建一个Tornado的IOLoop的实例。

     

    然后这里发现 运行过后 状态码会在运行框返回,这是在监听并返回结果

     

    上面说的哪个教程网站有详细的教程,这里我只记下我自己觉得重要的东西,

     

     

    ###表单和模板

    在html页面中如果要填充代码或者是参数,在html代码中添加{{}}符号 ,教程中2.1例子很重要。

    在{{}}里面不仅可以添加变量还可以添加表达式

    {% %}中间添加控制语句 if for while try

      Eg://这里取自上面哪个网页教程

    你同样可以在Tornado模板中使用Python条件和循环语句。控制语句以{%和%}包围,并以类似下面的形式被使用:

    {% if page is None %}

    {% if len(entries) == 3 %}

    控制语句的大部分就像对应的Python语句一样工作,支持ifforwhiletry。在这些情况下,语句块以{%开始,并以%}结束。

    所以这个模板:

    <html>

        <head>

            <title>{{ title }}</title>

        </head>

        <body>

            <h1>{{ header }}</h1>

            <ul>

                {% for book in books %}

                    <li>{{ book }}</li>

                {% end %}

            </ul>

        </body>

    </html>

    当被下面这个处理函数调用时:

    class BookHandler(tornado.web.RequestHandler):

        def get(self):

            self.render(

                "book.html",

                title="Home Page",

                header="Books that are great",

                books=[

                    "Learning Python",

                    "Programming Collective Intelligence",

                    "Restful Web Services"

                ]

            )

    将会渲染得到下面的输出:

    <html>

        <head>

            <title>Home Page</title>

        </head>

        <body>

            <h1>Books that are great</h1>

            <ul>

                <li>Learning Python</li>

                <li>Programming Collective Intelligence</li>

                <li>Restful Web Services</li>

            </ul>

        </body>

    </html>

     

    ###数据库 教程里用的是pymongo 
     
  • 相关阅读:
    angular中scope的watch用法
    angular中对于no-repeat的优化——track by
    angular筛选器
    为什么我只贴代码不给你们源码?
    新添子节点却无法被之前的删除功能所删除,处理方法,给删除功能延迟,有好办法记得告诉我下哈,感激不进
    IDEA下Maven项目搭建踩坑记----3.最长的bug,最简单的错误。同一类中,部分函数的@AutoWired注入的对象失效
    IDEA下Maven项目搭建踩坑记----2.项目编译之后 在service层运行时找不到 com.dao.CarDao
    IDEA下Maven项目搭建踩坑记----1.pom,xml文件下${spring-version}不能用
    Myeclipse maven 配置有问题 改之后重启还是不好用
    前端 的一些css的写法
  • 原文地址:https://www.cnblogs.com/tlbjiayou/p/11921664.html
Copyright © 2011-2022 走看看