This book covers the CherryPy library for Python web development from its history and installation through its main features and core concepts to its integration with Python and other products to construct, test, and deploy a sample photoblog application. The author Sylvain Hellegouarch is dedicated to the development of free software projects and has been coordinating and administrating the community efforts around the CherryPy project since 2004. The approach based on an example application introduces many other common Python libraries, providing transferable skills also relevant for non-web Python projects. CherryPy is a Python library for web development that allows developers to build web applications in the same way as any other object-oriented Python program. Enriched by several years of active development, it has become one of the most established toolkits for building solid and high-performance web applications in Python. CherryPy abstracts the complex low-level HTTP protocol into an easy-to-use interface that respects Python idioms. The library aims at being simple to learn for a beginner while offering the most advanced features to fluent Python developers. For these reasons CherryPy was chosen to be at the heart of the popular and feature-rich TurboGears web framework. CherryPy-powered web applications are stand-alone Python applications with their own embedded multi-threaded web server, but can also run behind Apache or IIS for scalability. . CherryPy installation using tarball, egg, and subversion . The CherryPy library in depth: its design and how to use it . Using CherryPy with common Python and non-Python products . Object Relational Mapping with SQLObject, SQLAlchemy, and Dejavu . Web Services via REST and the Atom Publishing Protocol . AJAX and client-side scripting via MochiKit . Unit, functional, and load testing . CherryPy, Apache, and lighttpd deployment solurions The book starts with two chapters dedicated to CherryPy itself, its history and installation. Then it moves through a gentle introduction to the main features and concepts of CherryPy to a thorough review of its core capabilities. After laying this foundation the book dives into a real-world example, detailing important steps in the creation of a photoblog application. These chapters cover database manipulation via Object Relational Mapping (ORM), using web services to enhance the application, and client-side scripting through AJAX. Finally, the book covers the need for unit, functional, and performance testing before closing with deployment solutions for a CherryPy-based application. Who this book is written for This book is principally geared towards Python web developers, who are looking to add the power of the CherryPy library to their existing Python skillset. It assumes a good working knowledge of Python . Although the CherryPy toolkit is at the core of the book, many other common libraries are introduced. TABLE OF CONTENTS SUMMARY 1.Introduction to CherryPy 2.Download and Install CherryPy 3.Overview of CherryPy 4.CherryPy in depth 5.A photoblog application 6.Web Services 7.The presentation layer 8.Ajax 9.Testing 10.Deployment
Preface 1
Chapter 1: Introduction to CherryPy 7
Overview 7
History of CherryPy 8
The Community 9
CherryPy Project Strengths 10
Beyond CherryPy 11
Through the Book 11
Summary 12
Chapter 2: Download and Install CherryPy 13
Requirements 13
Overview 14
Installation from a Tarball 16
Installation through Easy Install 18
Installation from Subversion 20
Testing your Installation 23
Keeping CherryPy Up to Date 23
Summary 24
Chapter 3: Overview of CherryPy 25
Vocabulary 25
Basic Example 26
Built-In HTTP Server 32
Internal Engine 32
Configuration 33
Object Publisher Engine 36
Library 38
The Autoreload Feature 39
The Caching Module 39
Table of Contents
[ ii ]
The Coverage Module 39
The Encoding/Decoding Module 40
The HTTP Module 40
The Httpauth Module 40
The Profiler Module 40
The Sessions Module 41
The Static Module 42
The Tidy Module 42
The Wsgiapp Module 42
The XML-RPC Module 42
Tools 43
Error and Exception Handling 44
Summary 49
Chapter 4: CherryPy in Depth 51
HTTP Compliance 51
Multiple HTTP Servers 52
Multi-Threaded Application Server 54
URI Dispatching 55
HTTP Method Dispatcher 55
Routes Dispatcher 57
Virtual Host Dispatcher 58
Hook into CherryPy's Core Engine 59
CherryPy Toolbox 61
Basic Authentication Tool 62
Caching Tool 63
Decoding Tool 64
Digest Authentication Tool 65
Encode Tool 66
Error Redirect Tool 67
Etag Tool 67
Gzip Tool 69
Ignore Headers Tool 69
Log Headers Tool 70
Log Tracebacks Tool 71
Proxy Tool 72
Referer Tool 73
Response Headers Tool 74
Trailing Slash Tool 75
XML-RPC Tool 76
Toolbox 77
Creating a Tool 77
Table of Contents
[ iii ]
Static Resource Serving 81
Using the Staticfile Tool to Serve a Single File 81
Using the Staticdir Tool to Serve a Complete Directory 83
Bypassing Static Tools to Serve Static Content 85
WSGI Support 86
Hosting a WSGI Application within the CherryPy WSGI Server 87
Hosting a CherryPy WSGI Application within a
Third-Party WSGI Server 89
Summary 90
Chapter 5: A Photoblog Application 91
A Photoblog Application 91
Photoblog Entities 92
Vocabulary 94
DBMSes Overview 95
Relational Database Management System (RDBMS) 95
Object-Oriented Database Management System (OODBMS) 96
XML Database Management System (XMLDBMS) 97
Object-Relational Mapping 97
Python Object-Relational Mappers 98
Photoblog Application Entity Modeling 108
Mapping Entities 109
Units and UnitProperties 111
Associating Units 112
The Sandbox Interface 112
Querying Units 113
Extending the Data Access Layer 114
Summary 117
Chapter 6: Web Services 119
Traditional Web Development 119
Separation of Concerns 121
REST 122
Uniform Resource Identifier 123
HTTP Methods 124
Putting it Together 128
REST Interface through CherryPy 130
Atom Publishing Protocol 131
Atom XML-Document Format 132
APP Implementation 134
Summary 136
Table of Contents
[ iv ]
Chapter 7: The Presentation Layer 137
HTML 137
XML 138
XHTML 138
CSS 139
DHTML 141
Templating 142
Kid—The Templating Engine 142
Overview 142
Kid's Attributes 144
XML-Based Templating Language 144
Variable Substitution 144
Conditional Statement 144
Looping Mechanism 145
Extensibility 146
Other Attributes 147
Photoblog Design Preparation 147
Targetting the User Agent 147
Tools 148
Global Design Goals 148
Design Directory Layout 149
CherryPy—Encapsulating the Template Rendering Process 149
Photoblog Design in Detail 151
Basic Structure 151
Mochikit 156
Developing the Photoblog Design 157
HTML Code 157
Adding a Link 158
Handling the End-User Actions 158
Amending the Template 159
Amending the CSS 159
Let's be More Flexible... 160
Summary 161
Chapter 8: Ajax 163
Rise of the Rich-Client Applications 163
Ajax 164
Ajax—Advantages and Drawbacks 165
Behind the Scene: XMLHttpRequest 166
Performing a GET Request 167
Performing a Content-Negotiated GET Request 168
Performing a POST Request 169
Performing PUT, HEAD, or DELETE Requests 170
Table of Contents
Cookies 170
Authentication using Digest or Basic Schemes 170
JSON 176
Applying Ajax to our Application 178
Defining the Required Namespaces 178
Implementing Namespaces 179
Adding Methods to the Classes 179
Method to Create a New Album 183
Method to Update an Existing Album 190
Method to Delete an Existing Album 190
Summary 191
Chapter 9: Testing 193
Why Testing 193
Planning a Test 194
Common Testing Approach 195
Unit Testing 195
unittest 196
doctest 201
Unit Testing Web Applications 205
Performance and Load Testing 213
Functional Testing 218
Application under Test 219
Selenium Core 222
Selenium IDE 227
Selenium Remote Control 231
Summary 233
Chapter 10: Deployment 235
Configuration 235
CherryPy—Web and Engine Configuration System 235
Photoblog Application Configuration System 238
Deployment 240
Apache with mod_rewrite Module 241
Lighttpd with mod_proxy Module 243
Apache with mod_python Module 244
mod_python with WSGI Application 246
SSL 246
Creating a Certificate and a Private Key 247
Using the CherryPy SSL Support 248
Using the lighttpd SSL Support 250
Using the Apache mod_ssl Support 251
Summary 251
Index 253
《完美教学:素描基础入门108例》内容简介:每一个人都有绘画的天赋。拿起笔,你也能快速画出生动的画面。这本书从专业的角度告诉我
《海豆大洋科考记》内容简介:本书是一本原创科普绘本,以“张謇”号出海驶向新不列颠海沟,进行为期40余天的科学考察活动为背景,
《中国履行《禁止化学武器公约》报告(2015)》内容简介:本书力求全面反映中国禁化武履约工作情况,客观展示中国履约成就,记录履
《写作高手:写出好文章的40个实用技巧》内容简介:业文字工作者亲身教学 全世界最有诚意、最多伏笔的“万能写作书”手把手教你写出
本书是美国Oregon州立大学的MichaelJ.Quinn教授在多年讲授“并行程序设计”课程的基础上编写而成的,主要介绍用C语言,并结合使用
网络工程师考前串讲与模拟试卷 内容简介 本书紧扣新版考试大纲,以“考前串讲” “模拟试卷” “真题分析”的组织形式对网络工程师考试考生冲刺阶段的复习做出了指导。...
Office2016办公专家 从入门到精通 本书特色 office已是当今应用*广泛的办公软件套装之一,熟练使用office也成为职场人士**的职业素养。本书以...
《齐白石鱼虫册》内容简介:“南山册页”是浙江摄影出版社自主选编的一套名家册页小品集,以散页函套的装帧形式出版,题材集中于历
Pro/ENGGINEER野火版4.0基础教程与上机指导 (孙传祝) 本书特色 《Pro/ENGINEER野火版 4.0基础教程与上机指导》涵盖Pro/ENGI...
《Docker实践(第2版)》内容简介:本书由浅入深地讲解了Docker的相关内容,涵盖从开发环境到DevOps流水线,再一路到生产环境的整个
《河北上市公司财务发展报告(2016)》内容简介:本书以河北上市公司作为具体研究对象,从公司筹资、投资、资金运营、业绩及履行社
Photoshop CS4数码照片精修专家技法精粹(附光盘) 本书特色 精彩光盘超值附赠73个实例素材及*终效果文件,200分钟多媒体演示视频,70个精美相框和...
《香格里拉的茉莉1:深渊之石》内容简介:苏茉莉,一个有着神秘身世的12岁少女,父母几年前相继在探险行动中失踪。中秋节的假期,放
《版本源流與正史校勘》内容简介:本书汇集的研究主要是依托中华书局“点校本《二十四史》及《清史稿》修订工程”而展开的。这些文
《中国精神读本》内容简介:☆权威编委:王蒙领衔的强大编委团队,汇聚国内杰出人文学者 ☆精心选篇:遴选中国近代以来百余篇传世名
《鉴知录》内容简介:《鉴知录》是一部读史随笔集。顾名思义,读《资治通鉴》,是为了鉴往知来。作者起于基层,富有实际工作经验。
《零基础学C语言(第3版)》内容简介:单片机C51语言是目前最流行的单片机程序设计语言。本书由浅入深,循序渐进地讲解了C51语言的
《可是,我开的是书店》内容简介:一间书店的生存守则:防火防盗,防电商降价,防网红打卡,防幼儿托管,防只看不买 多重视角切换下
《深入理解Bootstrap》内容简介:本书是目前Bootstrap领域技术版本最新、内容最全面、介绍最详细、实战性最强、最具深度的著作。它
Youdontneedprogrammingexperiencetoaddinteractiveandvisualeffectstoyourwebpageswi...