好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Python学习第二十六课(搭建一个网站)

用tornada搭建一个简单的网站。 一、程序结构 1、handler:处理网络请求。 2、application:创建一个tornado应用。 3、html+js+css网页界面。

二、运行一个网络服务 server.py

 import tornado.ioloop
import tornado.web
# 导入 
# mainhandler是处理网络请求的类,必须继承requestHandler。
class MainHandler(tornado.web.RequestHandler):
    # get方法,接受get请求
    def get(self):
        p1 = self.get_arguments('p')
        self.write("Hello, world")
    # post 请求处理post请求。
    def post(self):
        p1 = self.get_body_arguments('p')
        self.write("this is post request")

def create_app():
    return tornado.web.Application(
    # 这里的数组, 是路由,每一条对应一个请求路由。
    [
        (r"/", MainHandler),
    ]
    )

if __name__ == "__main__":
    app = create_app()
    app.listen(9001)
    tornado.ioloop.IOLoop.current().start() 

三、打开一个网页 修改一下上面的MainHandler类

 class MainHandler(tornado.web.RequestHandler):
    # get方法,接受get请求
    def get(self):
        p1 = self.get_arguments('p')
        self.write("<div style="color:red" > this html </div>") 

字符串的形式返回html。接下里使用模板,注意结构变化了,原理是不会变得,也是把模板转变成字符串,然后write方式传递给浏览器。

四、简单的模板

 def get_template():
    return '''
    <head>
        <title> %s </title>
    </head>
    <body>
        <div> %s </div>
    </body>
    '''
class MainHandler(tornado.web.RequestHandler):
    # get方法,接受get请求
    def get(self):
        html = get_template()
        html = html %("表达爱心","你是我的最爱")
        self.write(html) 

看看这段代码,模板实际上是字符串结构中,嵌入变量,从而可以在内部得到想要的结果。下面看看tornado里的模板。

五、模板 tornado的使用render方法来实现的。

 class MainHandler(tornado.web.RequestHandler):
    # get方法,接受get请求
    def get(self):
        p = self.get_arguments('blog1')
        if not p:
            raise tornado.web.HTTPError(404)
        self.render("blog1.html", entry=p) 
 blog.html的代码
<html>
  <head>
    <title> {{entry}} </title>
  </head>
  <body>
  <% if entry %>
    {{entry}}
  <% end %>
  <body>
</html> 

上面是tornado内部模板的语法规则。看{{}}两个大括号内的部分为变量。使用<% %>扩起来的,是可以操作的语句。例如判断语句、while循环等,都可以。只是语法规则不同。 下面会拿出一课堂单独讲讲tornado的模板。

查看更多关于Python学习第二十六课(搭建一个网站)的详细内容...

  阅读:32次