Pyramid

Pyramid 是一个基于MVC构架的开源WSGI web框架。

Pyramid web framework logo.

开源Pyramid案例

Pyramid资源

Bottle

Bottle (source code) 是一个WSGI-compliant single source file,不依赖外部任何库,除了 Python standard library (stdlib)

Official Bottle logo.

我该用Bottle来开发吗?

Bottle 在下面场合非常合适:

  1. 为创意做个原型
  2. 学习web框架如何构建Learning how web frameworks are built
  3. 建造和运行个人web应用

原型 Prototyping

做原型用Bottle会更加方便,它比Django轻多了。Django的Model-View-Template 构架使得维护项目更容易,但是当你只想做个原型验证想法时,Bottle更方便。

学习框架的知识

Bottle只有单个源文件 within a single large source file 名叫 bottle.py 因此提供了学习WSGI web框架如何工作的好机会。你所要知道的一切都在那个源文件里。

个人项目

个人项目可以把Bottle作为唯一的依赖库。把 bottle.py 跟你的源代码一起打包,就能运行你的web应用了。

Bottle资源

开源Bottle实例项目

Bottle框架学习清单

  1. 下载 Bottle 或者通过pip安装 pip install bottle
  2. 做一遍官方教程 Bottle tutorial.
  3. 开始做你自己的Bottle项目
  4. 部署你的应用到网上

Flask

Flask 是一个Python Web框架,其设计哲学是“小内核,高扩展性

Official Flask logo. Flask Artwork License.

为什么Flask是一个好的选择?

Flask被认为比Django更Pythonic。Flask很容易入手。

比如,一个Flask版的”hello world”web应用(对应的Django版需要更多的代码):

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello World!'

if __name__ == '__main__':
    app.run()

Flask是在Django之后很多年才开发的,这里有个与Django的对比experience switching between Flask and Django

Flask资源

开源Flask实例项目

Flask项目模板

Flask框架学习清单

  1. 安装 Flask 到本地开发环境
  2. 把上文中Flask资源里的18-part教程做一遍
  3. 通读 Flask Extensions Registry
  4. 编写你自己的Flask项目并部署到网上

Django

Django (发音:姜够)是一个广泛使用的Python web框架,号称“自带排炮”,其理念是开发web应用的功能模块应该包含在框架内,而不是调用外部库。

Official Django logo. Trademark Django Software Foundation.

比如说,验证authenticationURL routing,object-relational mapper (ORM),以及 database schema migrations (Django 1.7起) 都包含在django framework里。作为对比,比如要在Flask里使用,需要第三方的Flask-Login库实现验证。

自带火炮哲学和通过外部扩展哲学,是设计框架的两种不同理念。没有哪种理念一定优于另一种。

为什么Django是一个好的选择?

Django项目经过10多年发展,功能强大,社区繁荣,文档丰富,参考资料众多,是初学web框架的一个非常好的入门。各地都有活跃的Django社区。

Django书籍和教程

Django已经发展了10多年,确保看到不过时的书籍和教程。最新版本是1.11,这本书current Django books 介绍as of Django 1.9。

Django视频

最佳Python视频里有一节专门讲Django视频

Django迁移

  • Paul Hallett wrote a detailed Django 1.7 app upgrade guide on the Twilio blog from his experience working with the django-twilio package.
  • Real Python’s migrations primer explores the difference between South’s migrations and the built-in Django 1.7 migrations as well as how you use them.
  • Andrew Pinkham’s “Upgrading to Django 1.7” series is great learning material for understanding what’s changed in this major release and how to adapt your Django project. Part 1, part 2 and part 3 and part 4 are now all available to read.
  • Django migrations without downtimes shows one potential way of performing on-line schema migrations with Django.

Channels in 1.9+

Channels are a new mechanism in Django 1.9 provided as a standalone app. They may be incorporated into the core framework in 2.0+. Channels provide “real-time” full-duplex communication between the browser and the server based on WebSockets.

Django测试

Django与Angular (Djangular) 资源

Django ORM 资源

Django comes with its own custom object-relational mapper (ORM) typically referred to as “the Django ORM”. Learn more about the Django ORM on the Python object-relational mappers page that includes a section specifically for the Django ORM as well as additional resources and tutorials.

静态和多媒体文件

部署和处理静态和多媒体文件对Django开发新手来说不容易。下面资源讲述如何处理:

开源Django实例项目

  • Browser calls with Django and Twilio 展示如何用Django和Twilio Client 把用户的浏览器变成一个电话。相当酷!
  • Txt 2 React 一个Django项目,允许用户在演示时输入文本。
  • Openduty 一个网站状态监测,类似PagerDuty
  • Courtside 是一个体育网站应用
  • These two Django Interactive Voice Response (IVR) system web application repositories part 1 and part 2 show you how to build a really cool Django application. There’s also an accompanying blog post with detailed explanations of each step.
  • Taiga 是一个项目管理工具,Django做后端,AngularJS做前端。

Django项目模板

项目模板,不是模板引擎template engine,为Django生成格式化的代码

Django学习清单

  1. 安装 Django 到你的本地开发环境
  2. 完成最初的教程 “polls” tutorial
  3. 做一些简单应用
  4. 开始做你自己的项目。多参考官方文档official documentation
  5. 阅读 2 Scoops of Django 了解Django优良实践
  6. 到 部署环节,把你的Django应用部署到网上

Web框架

A web framework is a code library that makes a developer’s life easier when building reliable, scalable and maintainable web applications.

Why are web frameworks useful?

Web框架对网站开发进行了封装,让构造和维护网站变得更加便捷。常用的Python Web框架有 Django, Flask, Bottle, Pyramid, Morepath

常用Web框架功能

Web框架提供了如下功能:

  1. URL 路由
  2. HTML, XML, JSON及其他输出模板化
  3. 数据库操作
  4. 针对跨站点请求攻击Cross-site request forgery (CSRF) 的防范
  5. Session 存储和获取

并非所有Web框架都包含上述全部功能。比如,Django Web框架包含了一个对象关系映射层Object-Relational Mapping (ORM) ,抽象除了数据库的读写查删。但是,Django的ORM不能在非关系型数据库比如MongoDB上使用。

有些Web框架比如FlaskPyramid能通过引入外部Python库与非关系型数据库结合。这也表明,自身功能少的,容易与外部库结合,自身功能已经包含一切的,就不容易与外部库结合。

Web框架比较

this Django web application tutorialthe same application built with Flask,对比了同一个项目分别用Django和Flask开发。

有一个仓库叫compare-python-web-frameworks,其中的同一个项目用不同Python web框架实现。

学习web框架的同时也应该学习web application deployment and web APIs.

我必须使用web框架吗?

是否使用web框架,取决于你的网站开发经验和你的开发目标。如果你是一个网络开发新手,想要将网络开发作为一个学习项目,web框架会帮助你理解URL路由,数据操作,验证等常用web应用模块。

如果你是一个经验丰富的网络开发人员,认为现有web框架不能满足你的需求,你可以基于现有开源项目比如Werkzeug 制作你自己的web框架。

简言之,是否使用web框架取决于你的经验和你的目标。使用web框架不是必须,但是却会让你事半功倍。

Web框架资源

Web框架学习清单

  1. 选择一个Python Web框架,(推荐Django 或者Flask)并坚持使用不轻易更换。初学者应该先精通一个框架,而不是同时学习多个框架。
  2. 找一个详尽的介绍,跟着做一遍上面的示例。推荐Django Girls教程。
  3. 用该框架开发你自己的web项目并部署到网上。

Web开发

Web开发包括了设计、创建、部署、运维一个web应用。

How does Python fit into web development?

Python能用于服务器端的web应用。Web开发框架不是必须,但是可以极大加快开发效率。

Python不在浏览器里运行。pyjs能把Python代码转化成JavaScript。大多数Python开发者用Python写服务器端代码,用JavaScript写客户端代码。

Web开发资源

  • Web application development is different and better provides some context for how web development has evolved from writing static HTML files into the complex JavaScript client-side applications produced today.
  • While not Python-specific, Mozilla put together a Learning the Web tutorial for beginners and intermediate web users who want to build websites. It’s worth a look for general web development learning.
  • The Evolution of the Web visualizes how web browsers and related technologies have changed over time as well as the overall growth of the Internet in the amount of data transferred. Note that the visualization unfortunately stops around the beginning of 2013 but it’s a good way to explore what happened in the first 24 years.
  • Web development involves HTTP communication between the server, hosting a website or web application, and the client, a web browser. Knowing how web browsers works is important as a developer, so take a look at this article on what’s in a web browser.
  • Three takeaways for web developers after two weeks of painfully slow Internet is a must-read for every web developer. Not everyone has fast Internet service, whether because they are in a remote part of the world or they’re just in a subway tunnel. Optimizing sites so they work in those situations is important for keeping your users happy.