Python学习笔记(3):web初步

来源:互联网 发布:佛山专业网络推广公司 编辑:程序博客网 时间:2024/06/04 18:09

1、使用Python web可以快速构建一个网站,相对于Javaweb或者PHP,代码量减少了很多。使用Pythonweb需要提前下载tornado模块,方法很多,能正常使用即可

2、构建会话服务器:基本就是TCP链接,具体内部如何实现,不清楚,相对于c++的socket编程,确实减少了很多需要声明的东西。但微软的那一套socket编程学的很蛋疼,过于接近硬件了,所以能学会的几乎也比常人更多一些。

下面是服务端:

import socketcomms_socket=socket.socket()comms_socket.bind(('localhost',50000))comms_socket.listen(10)connection,address=comms_socket.accept()while True:print(connection.recv(4096).decode("UTF-8"))send_data=input("Reply:")connection.send(bytes(send_data,"UTF-8"))

下面是客户端:

import socketcomms_socket=socket.socket()comms_socket.connect(('localhost',50000))while True:send_data=input("send: ")comms_socket.send(bytes(send_data,"UTF-8"))print(comms_socket.recv(4096).decode("UTF-8"))

3、获取网页信息

需要注意的是,下面是针对Python3而言

import urllib.request, jsonimport http.server, ostry:url="http://php.weather.sina.com.cn/xml.php?city=%B1%B1%BE%A9&password=DJOYnieT8234jlsK&day=0"req=urllib.request.Request(url)forecast_string= urllib.request.urlopen(req).read()forecast_dict=json.loads(forecast_string.decode("UTF-8"))print(forecast_dict)except Exception:raiseelse:passfinally:pass

如果需要转换为json,如下

先用Python构建一个最简单的网站,返回一个json数据

import tornado.ioloopimport tornado.webimport jsondata={'name':'doubleevil'}data_json=json.dumps(data)class MainHandler(tornado.web.RequestHandler):def get(self):self.write(data_json)if __name__=="__main__":application=tornado.web.Application([(r"/",MainHandler),],)application.listen(8888)tornado.ioloop.IOLoop.instance().start()

下一步,直接获取信息

import urllib.requestimport jsonurl="http://127.0.0.1:8888"req=urllib.request.Request(url)result_string=urllib.request.urlopen(req).read()result_dict=json.loads(result_string.decode("UTF-8"))print(result_dict["name"])

结果为doubleevil

4、网站

(1)最简单的网站,只有helloworld

import tornado.ioloopimport tornado.webclass MainHandler(tornado.web.RequestHandler):def get(self):self.write("<html>helloworld"+"</html>")if __name__=="__main__":application=tornado.web.Application([(r"/",MainHandler),],)application.listen(8888)tornado.ioloop.IOLoop.instance().start()
(2)改进版

import tornado.ioloopimport tornado.webclass MainHandler(tornado.web.RequestHandler):def get(self):self.write("<html>hello,index+"+"</html>")class HelloHandler(tornado.web.RequestHandler):def get(self):self.render("/Users/shangguyi/Desktop/user-info.html")def post(self):self.render("index.html",name=self.get_argument("name"))if __name__=="__main__":application=tornado.web.Application([(r"/",MainHandler),(r"/hello/",HelloHandler)],)application.listen(8888)tornado.ioloop.IOLoop.instance().start()


user-info.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">    <head>        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />        <title>Untitled Document</title>    </head>        <body>    <form action="/hello/" method="post">    enter your name:<input type="text" name="name">    <input type="submit" value="Sign in">    </form>    </body></html>

(3)类似SpringMVC

import tornado.ioloopimport tornado.webclass MainHandler(tornado.web.RequestHandler):def get(self,name_in):self.name=name_inself.render("/Users/shangguyi/Desktop/index.html",name=self.name)if __name__=="__main__":application=tornado.web.Application([(r"/(.*)",MainHandler),],)application.listen(8888)tornado.ioloop.IOLoop.instance().start()


index.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">    <head>        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />        <title>Untitled Document</title>    </head>        <body>    Welcome:{{ name }}    </body></html>



0 0
原创粉丝点击