python Web

做网站的python框架有很多,如 djangle,tornado,flask,webpy等。

python版本为(python2.7.9)

 

一、djangle,重型框架,功能系统全面,资料最多。

安装django

 

python -m pip install https://bitbucket.org/david/django-storages/get/def732408163.zip 

python -m pip install Django

 

二、tornado,相对轻量web框架,支持高访问量。

1 . 主要类介绍

参考:http://www.360doc.com/content/14/0811/18/16044571_401100703.shtml

 

  1. BaseServer:包含服务器的核心功能与混合(mix-in)类挂钩;这个类只用于派生,所以不会生成这个类的实例;可以考虑使用TCPServer和UDPServer。
  2. TCPServer/UDPServer:基本的网络同步TCP/UDP服务器。
  3. UnixStreamServer/ UnixDatagramServer:基本的基于文件同步TCP/UDP服务器。
  4. ForkingMixIn/ ThreadingMixIn:实现了核心的进程化或线程化的功能;作为混合类,与服务器类一并使用以提供一些异步特性;这个类不会直接实例化。
  5. ForkingTCPServer/ ForkingUDPServer:ForkingMixIn和TCPServer/UDPServer的组合。
  6. BaseRequestHandler:包含处理服务请求的核心功能。这个类只用于派生,所以不会生成这个类的实例可以考虑使用StreamRequestHandler或DatagramRequestHandler。
  7. StreamRequestHandler/ DatagramRequestHandler:用于TCP/UDP服务器的服务处理工具。

2 . 几个web例子:

sample 1 hello:

 

import tornado.httpserver
import tornado.ioloop
def handle_request(request):
    print ' recieved request form %s ' % request.uri
    message = "your request is %s\n" % request.uri
    request.write("HTTP/1.1 200 OK\r\n Content-Lenght:%d\r\n\r\n%s" % (len(message),message))
    request.finish()

http_server = tornado.httpserver.HTTPServer(handle_request)
http_server.listen(8100)
tornado.ioloop.IOLoop.instance().start()


创建一个http_server, 对接处理函数为handle_request处理。

 

handle_reques处理请求,接受到request的时候,往回写一个 消息'recieved request from xxxx',然后接受请求。

 

sample2  hello,world

 

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

from tornado.options import define, options
define("port", default=8899, 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()

 

主函数创建一个应用程序实例app,当接收到"/"请求时,对应Indexhandler类处理请求。

 

创建一个httpserver类实例,并与app绑定。

然后开始循环监听。

 

3 sample 前后端

前台上传文件,后台调用python其它脚本

 

import tornado.ioloop
import tornado.web
import pic_imp2


class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.render('index.html')

class UploadHandler(tornado.web.RequestHandler):
    def post(self):
        if self.request.files:
            myfile = self.request.files['myfile'][0]
            fin = open("tmp.zip","w")  
            print "success to open file"
            fin.write(myfile["body"])
	    fin.close()
	    message = "document is recieved"
	    self.write("HTTP/1.1 200 OK\r\n Content-Length:%d \r\n\r\n%s" %(len(message),message))
	    pic_imp2.start('{"user_id":"duke","params":{"file":"tmp.zip"}}')
	    
	    message = "process is done!"
	    self.write("HTTP/1.1 200 OK\r\n Content-Length:%d \r\n\r\n%s" %(len(message),message))

	    print "process over"

application=tornado.web.Application([(r'/',MainHandler),(r'/upload', UploadHandler) ]
        )

if __name__=='__main__':
    application.listen(8800)
    tornado.ioloop.IOLoop.instance().start()


创建一个tornado web应用程序application,请求相对地址为/的时候由类MainHandler处理,请求相对地址为upload时 由类 UploadHandler处理。

 

程序主函数:application 监听8800端口(对应请求为 http://127.0.0.1:8800),然后运行后台。

MainHandler,一个继承自tornado.web.RequestHandler的类

定义get方法,当收到get请求时,向客户端返回一个html页面 index.html

UploadHandler,一个继承自tornado.webRequestHandler的类

定义post方法,当服务器接受到来自客户端的upload请求时,做一系列事情:

if self.request.files: 如果请求中带有文件
            myfile = self.request.files['myfile'][0]  #得到以myfile标示的文件,并用一个文件对象(咱们也命名为myfile)的实例转存
            fin = open("tmp.zip","w")  #创建并写的方式打开文件。
            print "success to open file" # 服务端产生一个输出
            fin.write(myfile["body"]) #吧myflie实例的文件实体部分写入tmp.zip
   fin.close()   # 关闭tmp.zip文件
   message = "document is recieved"
   self.write("HTTP/1.1 200 OK\r\n Content-Length:%d \r\n\r\n%s" %(len(message),message)) # 向客户端返回一些信息(注意是有固定格式要求的,不然客户端无法解析)
   pic_imp2.start('{"user_id":"duke","params":{"file":"tmp.zip"}}')#调用pic_imp2模块的start函数,并传参(参数为一个json串)
   
   message = "process is done!"
   self.write("HTTP/1.1 200 OK\r\n Content-Length:%d \r\n\r\n%s" %(len(message),message)) #向客户端返回消息,提示处理完毕
   print "process over" #服务器端显示处理完毕

前台index.html:

 

<html>
<body>
<h1>欢迎使用传图服务,请选择图片压缩包,点击提交</h1>
      <form action="/upload" enctype="multipart/form-data" method="post">
          <input name="myfile" type="file">
          <input type="submit" value="Submit">
      </form>
</body>
</html>

前台为一个html页面,页面内有一个h1标题,有一个表单。

 

表单里有两个标签,当表单提交时,向服务器发送的请求会加上相对地址/upload,触发post方法,表单数据向服务器提交时,采用multipart/form-data编码(二进制形式上传数据)。

一个file型的input标签,用来选择本地文件,文件选择后,文件标示名设为myfile

一个 submit类型input标签,用来提交并触发对服务器端的post方法。
 

 

三、python自带的web功能:

python 一句话搭建web静态网站

from http://www.cnblogs.com/xuxn/archive/2011/02/14/build-simple-web-server-with-python.html

利用Python自带的包可以建立简单的web服务器。在DOS里cd到准备做服务器根目录的路径下,输入命令:

 

  • python -m Web服务器模块 [端口号,默认8000]

例如:

 

  • python -m SimpleHTTPServer 8080

 

注意:python3 命令改为:python -m http.server 端口号

然后就可以在浏览器中输入

  • http://localhost:端口号/路径

来访问服务器资源。 

这种方法可以提供简单的文件服务。
例如:

 

  • http://localhost:8080/index.htm(当然index.htm文件得自己创建)

其他机器也可以通过服务器的IP地址来访问。

 

 

 

 

这里的“Web服务器模块”有如下三种:

 

  • BaseHTTPServer: 提供基本的Web服务和处理器类,分别是HTTPServer和BaseHTTPRequestHandler。
  • SimpleHTTPServer: 包含执行GET和HEAD请求的SimpleHTTPRequestHandler类。
  • CGIHTTPServer: 包含处理POST请求和执行CGIHTTPRequestHandler类。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值