10款Web开发最佳的Python框架,10款webpython

Python是跻身于当代IT世界最流行和代码最高效的编程语言之一。Python框架能帮助你快速启动Web应用。

1、CubicWeb

Python是跻身于当代IT世界最流行和代码最高效的编程语言之一。Python框架能帮助你快速启动Web应用。

Web框架本质

1、众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端

#!/usr/bin/env python
# -*- coding:utf-8 -*-
#-Author-Lian

import socket

def handle_request(client):
    buf = client.recv(1024)
    client.send("HTTP/1.1 200 OK\r\n\r\n".encode("utf-8"))
    client.send("Hello, Seven".encode("utf-8"))

def main():
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.bind(('localhost', 8000))
    sock.listen(5)
    while True:
        connection, address = sock.accept()
        handle_request(connection)
        connection.close()

if __name__ == '__main__':
    main()

执行上面程序,直接用浏览器访问

上述通过socket来实现了其本质,而对于真实开发中的python
web程序来说,一般会分为两部分:服务器程序和应用程序。服务器程序负责对socket服务器进行封装,并在请求到来时,对请求的各种数据进行整理。应用程序则负责具体的逻辑处理。为了方便应用程序的开发,就出现了众多的Web框架,例如:Django、Flask、web.py
等。不同的框架有不同的开发方式,但是无论如何,开发出的应用程序都要和服务器程序配合,才能为用户提供服务。这样,服务器程序就需要为不同的框架提供不同的支持。这样混乱的局面无论对于服务器还是框架,都是不好的。对服务器来说,需要支持各种不同框架,对框架来说,只有支持它的服务器才能被开发出的应用使用。这时候,标准化就变得尤为重要。我们可以设立一个标准,只要服务器程序支持这个标准,框架也支持这个标准,那么他们就可以配合使用。一旦标准确定,双方各自实现。这样,服务器可以支持更多支持标准的框架,框架也可以使用更多支持标准的服务器;WSGI(Web
Server Gateway Interface)是一种规范,它定义了使用python编写的web
app与web server之间接口格式,实现web app与web server间的解耦

2、python标准库提供的独立WSGI服务器称为wsgiref

#!/usr/bin/env python
# -*- coding:utf-8 -*-
#-Author-Lian

from wsgiref.simple_server import make_server

def RunServer(environ, start_response):
    start_response('200 OK', [('Content-Type', 'text/html')])
    return ['<h1>Hello, web!</h1>'.encode("utf-8"),]

if __name__ == '__main__':
    httpd = make_server('', 8000, RunServer)
    print("Serving HTTP on port 8000...")
    httpd.serve_forever()

更少的代码实现web交互

 

10款Web开发最佳的Python框架(1)

Python是跻身于当代IT世界最流行和代码最高效的编程语言之一。Python框架能帮助你快速启动Web应用。

1.CubicWeb

CubicWeb的最重要的功能是其代码的可重用性,由一个个代码单元组成。它灵活又强大,并且还有一些特别的功能,包括RQL查询语言和支持有效编码的语义视图功能。这是语义Web应用程序的最佳解决方案,并且提供理想的环境。

作为一个程序员,我们必须了解Python这门编程语言的灵活和强大。框架的选择取决于Web应用程序的使用目的和复杂程度。测量项目所需的负荷、可扩展性和效率是关键。

图片 1

官方网站:

2.Zope2

Zope是不同Web框架集合在一起的完整家庭。与其他框架相比,zope2在当前的开发环境中对于内容管理系统是相当有限的。
Zope工具包是一个很好的库资源,允许使用重用代码和不同的库。

图片 2

官方网站:

3.web2py

web2py最重要的因素是其外部零依赖,可以创建、复原、管理和修改在浏览器中的应用程序。对于一些简单的web开发任务,大部分都可以自动化快
速开发。程序员甚至不需要再准备单一的开发、调试、测试、部署和数据库处理的封装包。内置的Web界面中这些都有,在使用之前也不需要进行安装。

图片 3

官方网站:

4.TurboGears

TurboGears也称为是框架的终结者,因为它虽然有着其他Python框架都有的功能,却不像其他框架那样有局限性。它甚至能适用于简单的微
架构项目。它给人的感觉就不像是工作在框架上,而像是在写新的功能。你可以在几分钟之内可以创建一个read-to-extend应用,并且我们可以在网
上找到大量的教程。

图片 4

官方网站:


图片 5


)
Python是跻身于当代IT世界最流行和代码最高效的编程语言之一。Python框架能帮助你快速启动Web应用。
1.CubicWe…

1.CubicWeb

CubicWeb的最重要的功能是其代码的可重用性,由一个个代码单元组成。它灵活又强大,并且还有一些特别的功能,包括RQL查询语言和支持有效编码的语义视图功能。这是语义Web应用程序的最佳解决方案,并且提供理想的环境。

作为一个程序员,我们必须了解Python这门编程语言的灵活和强大。框架的选择取决于Web应用程序的使用目的和复杂程度。测量项目所需的负荷、可扩展性和效率是关键。

图片 6

官方网站:

CubicWeb的最重要的功能是其代码的可重用性,由一个个代码单元组成。它灵活又强大,并且还有一些特别的功能,包括RQL查询语言和支持有效编码的语义视图功能。这是语义Web应用程序的最佳解决方案,并且提供理想的环境。

1.CubicWeb

CubicWeb的最重要的功能是其代码的可重用性,由一个个代码单元组成。它灵活又强大,并且还有一些特别的功能,包括RQL查询语言和支持有效编码的语义视图功能。这是语义Web应用程序的最佳解决方案,并且提供理想的环境。

作为一个程序员,我们必须了解Python这门编程语言的灵活和强大。框架的选择取决于Web应用程序的使用目的和复杂程度。测量项目所需的负荷、可扩展性和效率是关键。

图片 7

官方网站:

自定义Web框架

1、简单框架

通过python标准库提供的wsgiref模块开发一个自己的Web框架

#!/usr/bin/env python
# -*- coding:utf-8 -*-
#-Author-Lian

from wsgiref.simple_server import make_server

def handel_index():
    return ['<h1>Hello, index!</h1>'.encode("utf-8"), ]

def handel_data():
    return ['<h1>Hello, data!</h1>'.encode("utf-8"), ]

URL_DICT={
    '/index':handel_index,
    '/data':handel_data,
}

def RunServer(environ, start_response):
    #start_response 封装返回给用户的数据
    start_response('200 OK', [('Content-Type', 'text/html')])
    #environ 客户发来的数据
    current_url = environ['PATH_INFO']
    func = None
    if current_url in URL_DICT:
        func = URL_DICT[current_url]
    if func:
        return func()
    else:
        return ['<h1>Error 404</h1>'.encode("utf-8"), ]

if __name__ == '__main__':
    httpd = make_server('', 8009, RunServer)
    print("Serving HTTP on port 8000...")
    httpd.serve_forever()

2、模板引擎

在上一步骤中,对于所有的login、index均返回给用户浏览器一个简单的字符串,在现实的Web请求中一般会返回一个复杂的符合HTML规则的字符串,所以我们一般将要返回给用户的HTML写在指定文件中,然后再返回。如:

图片 8图片 9

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    <form>
        <input type="text" />
        <input type="text" />
        <input type="submit" />
    </form>
</body>
</html>

data.html

图片 10图片 11

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    <h1>Index</h1>
</body>
</html>

index.html

#!/usr/bin/env python
# -*- coding:utf-8 -*-
#-Author-Lian

from wsgiref.simple_server import make_server

def handel_index():
    f = open('index.html','rb')
    data = f.read()
    return [data,]
    # return ['<h1>Hello, index!</h1>'.encode("utf-8"), ]

def handel_data():
    f = open('data.html','rb')
    data = f.read()
    return [data,]
    # return ['<h1>Hello, data!</h1>'.encode("utf-8"), ]

URL_DICT={
    '/index':handel_index,
    '/data':handel_data,
}

def RunServer(environ, start_response):
    #start_response 封装返回给用户的数据
    start_response('200 OK', [('Content-Type', 'text/html')])
    #environ 客户发来的数据
    current_url = environ['PATH_INFO']
    func = None
    if current_url in URL_DICT:
        func = URL_DICT[current_url]
    if func:
        return func()
    else:
        return ['<h1>Error 404</h1>'.encode("utf-8"), ]

if __name__ == '__main__':
    httpd = make_server('', 8009, RunServer)
    print("Serving HTTP on port 8000...")
    httpd.serve_forever()

对于上述代码,虽然可以返回给用户HTML的内容以现实复杂的页面,但是还是存在问题:如何给用户返回动态内容?

3、返回动态页面数据

  • 自定义一套特殊的语法,进行替换
  • 使用开源工具jinja2,遵循其指定语法

    #!/usr/bin/env python
    # –– coding:utf-8 –
    #-Author-Lian

    from wsgiref.simple_server import make_server

    def handel_index():

    f = open('index.html','rb')
    data = f.read()
    data = data.replace(b'Index',"程荣华吃骨头".encode("utf-8"))
    return [data,]
    # return ['<h1>Hello, index!</h1>'.encode("utf-8"), ]
    

    def handel_data():

    f = open('data.html','rb')
    data = f.read()
    return [data,]
    # return ['<h1>Hello, data!</h1>'.encode("utf-8"), ]
    

    URL_DICT={

    '/index':handel_index,
    '/data':handel_data,
    

    }

    def RunServer(environ, start_response):

    #start_response 封装返回给用户的数据
    start_response('200 OK', [('Content-Type', 'text/html')])
    #environ 客户发来的数据
    current_url = environ['PATH_INFO']
    func = None
    if current_url in URL_DICT:
        func = URL_DICT[current_url]
    if func:
        return func()
    else:
        return ['<h1>Error 404</h1>'.encode("utf-8"), ]
    

    if name == ‘main‘:

    httpd = make_server('', 8009, RunServer)
    print("Serving HTTP on port 8000...")
    httpd.serve_forever()
    

4、WEB框架

MVC
    Model View Controller
    数据库 模板文件 业务处理
MTV
    Model Template View
    数据库 模板文件 业务处理

 

  

 

2.Zope2

Zope是不同Web框架集合在一起的完整家庭。与其他框架相比,zope2在当前的开发环境中对于内容管理系统是相当有限的。
Zope工具包是一个很好的库资源,允许使用重用代码和不同的库。

图片 12

官方网站:

作为一个程序员,我们必须了解Python这门编程语言的灵活和强大。框架的选择取决于Web应用程序的使用目的和复杂程度。测量项目所需的负荷、可扩展性和效率是关键。

2.Zope2

Zope是不同Web框架集合在一起的完整家庭。与其他框架相比,zope2在当前的开发环境中对于内容管理系统是相当有限的。
Zope工具包是一个很好的库资源,允许使用重用代码和不同的库。

图片 13

官方网站:

3.web2py

web2py最重要的因素是其外部零依赖,可以创建、复原、管理和修改在浏览器中的应用程序。对于一些简单的web开发任务,大部分都可以自动化快速开发。程序员甚至不需要再准备单一的开发、调试、测试、部署和数据库处理的封装包。内置的Web界面中这些都有,在使用之前也不需要进行安装。

图片 14

官方网站:

图片 15

3.web2py

web2py最重要的因素是其外部零依赖,可以创建、复原、管理和修改在浏览器中的应用程序。对于一些简单的web开发任务,大部分都可以自动化快速开发。程序员甚至不需要再准备单一的开发、调试、测试、部署和数据库处理的封装包。内置的Web界面中这些都有,在使用之前也不需要进行安装。

图片 16

官方网站:

4.TurboGears

TurboGears也称为是框架的终结者,因为它虽然有着其他Python框架都有的功能,却不像其他框架那样有局限性。它甚至能适用于简单的微架构项目。它给人的感觉就不像是工作在框架上,而像是在写新的功能。你可以在几分钟之内可以创建一个read-to-extend应用,并且我们可以在网上找到大量的教程。

图片 17

官方网站:

在这里还是要推荐下我自己建的Python开发学习群:628979297,群里都是学Python开发的,如果你正在学习Python
,小编欢迎你加入,今天分享的这个案例已经上传到群文件,大家都是软件开发党,不定期分享干货(只有Python软件开发相关的),包括我自己整理的一份2018最新的Python进阶资料和高级开发教程,欢迎进阶中和进想深入Python的小伙伴

4.TurboGears

TurboGears也称为是框架的终结者,因为它虽然有着其他Python框架都有的功能,却不像其他框架那样有局限性。它甚至能适用于简单的微架构项目。它给人的感觉就不像是工作在框架上,而像是在写新的功能。你可以在几分钟之内可以创建一个read-to-extend应用,并且我们可以在网上找到大量的教程。

图片 18

官方网站:

5.Pylons

灵活性是pylons框架的主要特点之一。它可以将不同Python框架提供的某些最好功能,整合到同一个地方。Pyramid是pylons的第一批产品之一,它把重点放在了快速和灵活开发实践上。你可以挑选任何你认为可以提高Web开发效率的功能整合到一起。

图片 19

官方网站:

2、Zope2

5.Pylons

灵活性是pylons框架的主要特点之一。它可以将不同Python框架提供的某些最好功能,整合到同一个地方。Pyramid是pylons的第一批产品之一,它把重点放在了快速和灵活开发实践上。你可以挑选任何你认为可以提高Web开发效率的功能整合到一起。

图片 20

官方网站:

6.Grok

它由Zope工具包提供支持,并且一开始的时候是作为一个易扩展的Zope工具箱,为了方便那些菜鸟程序员的使用而开发
的。对于Web应用,Grok不但能提供多个构件,还有一个随时可以提供支持的很好社区。它提供了一种更为简单和灵活的学习Python的模式。它配备的可DRY方法使得它成为了一个很好的工具。

图片 21

官方网站:

Zope是不同Web框架集合在一起的完整家庭。与其他框架相比,zope2在当前的开发环境中对于内容管理系统是相当有限的。
Zope工具包是一个很好的库资源,允许使用重用代码和不同的库。

6.Grok

它由Zope工具包提供支持,并且一开始的时候是作为一个易扩展的Zope工具箱,为了方便那些菜鸟程序员的使用而开发
的。对于Web应用,Grok不但能提供多个构件,还有一个随时可以提供支持的很好社区。它提供了一种更为简单和灵活的学习Python的模式。它配备的可DRY方法使得它成为了一个很好的工具。

图片 22

官方网站:

7.Web.py

之所以说这是一款非常独特的框架,主要是因为它的简单性和功能强大的开发能力。你可以用Python语言舒舒服服地编写web应用程序。你会因为它的零局限性和易用性喜欢上web.py。有些程序员可能会发现它对功能的限制比较少,因为它预留了整合的空间,所以你不必一下子加载所有的功能,尤其是那些你并不需要的。

图片 23

官方网站:

图片 24

7.Web.py

之所以说这是一款非常独特的框架,主要是因为它的简单性和功能强大的开发能力。你可以用Python语言舒舒服服地编写web应用程序。你会因为它的零局限性和易用性喜欢上web.py。有些程序员可能会发现它对功能的限制比较少,因为它预留了整合的空间,所以你不必一下子加载所有的功能,尤其是那些你并不需要的。

图片 25

官方网站:

8.Pyramid

Pyramid以其高效率和快节奏的开发能力而出名。这个框架最妙的是包含了一些Python,Perl和Ruby提供的最独特的功能。此开源Web框架有一个独立于平台的MVC结构,提供了开发的最简途径。此外,它还是高效开发重用代码的首选平台之一。

图片 26

官方网站:

3、web2py

8.Pyramid

Pyramid以其高效率和快节奏的开发能力而出名。这个框架最妙的是包含了一些Python,Perl和Ruby提供的最独特的功能。此开源Web框架有一个独立于平台的MVC结构,提供了开发的最简途径。此外,它还是高效开发重用代码的首选平台之一。

图片 27

官方网站:

9.CherryPy

CherryPy起源的其中一个最重要的原因是,它与Python兼容,并且它Python化的接口允许开发人员像Python提供的其他任何模块一样将其整合。另一个优秀的特点是能够自定义各个功能,并配备了本地适配器(mod_python),使得它非常适合开发。它为每一个WSGI功能适配器提供支持,并允许CherryPy的广泛实施。

图片 28

官方网站:

web2py最重要的因素是其外部零依赖,可以创建、复原、管理和修改在浏览器中的应用程序。对于一些简单的web开发任务,大部分都可以自动化快速开发。程序员甚至不需要再准备单一的开发、调试、测试、部署和数据库处理的封装包。内置的Web界面中这些都有,在使用之前也不需要进行安装。

9.CherryPy

CherryPy起源的其中一个最重要的原因是,它与Python兼容,并且它Python化的接口允许开发人员像Python提供的其他任何模块一样将其整合。另一个优秀的特点是能够自定义各个功能,并配备了本地适配器(mod_python),使得它非常适合开发。它为每一个WSGI功能适配器提供支持,并允许CherryPy的广泛实施。

图片 29

官方网站:

10.Flask

Flask是一款可扩展却又简单的微架构。可能刚用的时候你会觉得它缺少某些功能,如表单验证、数据库抽象层、添加常用功能的第三方库。但是,它允许扩展,使得它更易于添加所需的功能。它的有些功能如单元测试非常适用于开发,并且支持客户端应用程序使用安全的cookies。它更适用于轻量级的应用程序和项目。

 

译文链接:
英文原文:10 Best Python Frameworks for Web Development
翻译作者:码农网 – 小峰

Python是跻身于当代IT世界最流行和代码最高效的编程语言之一。Python框架能帮助你快速启动Web应用。…

图片 30

10.Flask

Flask是一款可扩展却又简单的微架构。可能刚用的时候你会觉得它缺少某些功能,如表单验证、数据库抽象层、添加常用功能的第三方库。但是,它允许扩展,使得它更易于添加所需的功能。它的有些功能如单元测试非常适用于开发,并且支持客户端应用程序使用安全的cookies。它更适用于轻量级的应用程序和项目。

 

 

译文链接:
英文原文:10 Best Python Frameworks for Web
Development
翻译作者:码农网 – 小峰

4、TurboGears

TurboGears也称为是框架的终结者,因为它虽然有着其他Python框架都有的功能,却不像其他框架那样有局限性。它甚至能适用于简单的微架构项目。它给人的感觉就不像是工作在框架上,而像是在写新的功能。你可以在几分钟之内可以创建一个read-to-extend应用,并且我们可以在网上找到大量的教程。

图片 31

5、Pylons

灵活性是pylons框架的主要特点之一。它可以将不同Python框架提供的某些最好功能,整合到同一个地方。Pyramid是pylons的第一批产品之一,它把重点放在了快速和灵活开发实践上。你可以挑选任何你认为可以提高Web开发效率的功能整合到一起。

图片 32

6、Grok

它由Zope工具包提供支持,并且一开始的时候是作为一个易扩展的Zope工具箱,为了方便那些菜鸟程序员的使用而开发
的。对于Web应用,Grok不但能提供多个构件,还有一个随时可以提供支持的很好社区。它提供了一种更为简单和灵活的学习Python的模式。它配备的可DRY方法使得它成为了一个很好的工具。

图片 33

7、Web.py

之所以说这是一款非常独特的框架,主要是因为它的简单性和功能强大的开发能力。你可以用Python语言舒舒服服地编写web应用程序。你会因为它的零局限性和易用性喜欢上web.py。有些程序员可能会发现它对功能的限制比较少,因为它预留了整合的空间,所以你不必一下子加载所有的功能,尤其是那些你并不需要的。

图片 34

8、Pyramid

Pyramid以其高效率和快节奏的开发能力而出名。这个框架最妙的是包含了一些Python,Perl和Ruby提供的最独特的功能。此开源Web框架有一个独立于平台的MVC结构,提供了开发的最简途径。此外,它还是高效开发重用代码的首选平台之一。

图片 35

9、CherryPy

CherryPy起源的其中一个最重要的原因是,它与Python兼容,并且它Python化的接口允许开发人员像Python提供的其他任何模块一样将其整合。另一个优秀的特点是能够自定义各个功能,并配备了本地适配器(mod_python),使得它非常适合开发。它为每一个WSGI功能适配器提供支持,并允许CherryPy的广泛实施。

图片 36

10、Flask

Flask是一款可扩展却又简单的微架构。可能刚用的时候你会觉得它缺少某些功能,如表单验证、数据库抽象层、添加常用功能的第三方库。但是,它允许扩展,使得它更易于添加所需的功能。它的有些功能如单元测试非常适用于开发,并且支持客户端应用程序使用安全的cookies。它更适用于轻量级的应用程序和项目。

写在最后

前几天有私信小编要Python的学习资料,小编整理了一些有深度的Python教程和参考资料,从入门到高级的都有,文件已经打包好了,正在学习Python的同学可以下载学习学习。文件下载方式:点击小编头像,关注后私信回复“资料”即可下载。首先把代码撸起来!首先把代码撸起来!首先把代码撸起来!重要的事说三遍,哈哈。“编程是门手艺活”。什么意思?得练啊。

图片 37

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图