Welcome to The Zope Book. This book is designed to introduce you to Zope, the open source web application server.
To make effective use of the book, you should know how to use a web browser and you should have a basic understanding of HTML (Hyper Text Markup Language) and URLs (Uniform Resource Locators). You don't need to be a highly-skilled programmer in order to use Zope, but some programming background (particularly object-oriented programming) will be extremely helpful.
How the Book Is Organized
A brief summary of each chapter is presented below.
This chapter explains what Zope is and what it can do for you. You also learn about the differences between Zope and other web application servers.
Zope Concepts and Architecture
This chapter explains fundamental Zope concepts and describes some of Zope's architecture.
Installing and Starting Zope
This chapter explains how to install and start Zope for the first time. By the end of this chapter, you should have Zope installed and working.
This chapter explains the concept of object orientation, which is the development methodology most often used to create Zope applications.
Using The Zope Management Interface
This chapter explains how to use Zope's web-based management interface. By the end of this chapter you should be able to navigate around the Zope object space, copy and move objects, and use other basic Zope features.
Using Basic Zope Objects
This chapter introduces objects, which are the most important elements of Zope. We introduce the basic Zope objects: content objects, presentation objects, and logic objects, and we build a simple application using these objects.
This chapter introduces acquisition, which is Zope's mechanism for sharing site behavior and content via "containment".
This chapter introduces DTML, Zope's tag-based scripting language. We describe how to use DTML's templating and scripting facilities. We cover DTML syntax and the three most basic tags, var, if and in. After reading this chapter you'll be able to create dynamic web pages.
Using Zope Page Templates
This chapter introduces Zope Page Templates, another Zope tool used to create dynamic web pages. This chapter shows you how to create and edit page templates. It also introduces basic template statements that let you insert dynamic content.
Creating Basic Zope Applications
This chapter walks the reader through several real-world examples of building a Zope application. It explains how to use basic Zope objects and how they can work together to form basic applications.
Users and Security
This chapter looks at how Zope handles users, authentication, authorization, and other security-related matters.
This chapter takes a closer look at DTML. It covers DTML security and the tricky issue of how variables are looked up in DTML. It also covers advanced uses of the basic tags covered in Chapter 3 and the myriad special purpose tags. This chapter will turn you into a DTML wizard.
Advanced Page Templates
This chapter goes into more depth with templates. This chapter teaches you all the template statements and expression types. It also covers macros which let you reuse presentation elements.
Advanced Zope Scripting
This chapter covers scripting Zope with Python and Perl. It explains how to write business logic in Zope using tools more powerful than DTML. It discusses the idea of scripts in Zope, and focuses on Python and Perl-based Scripts. This chapter shows you how to add industrial-strength scripting to your site.
This chapter covers Zope objects which are "services" that don't readily fit into any of the basic "content", "presentation" or "logic" object groups.
Searching and Categorizing Content
This chapter shows you how to index and search objects with Zope's built-in search engine, the Catalog. It introduces indexing concepts and discusses different patterns for indexing and searching. Finally it discusses metadata and search results.
Relational Database Connectivity
This chapter describes how Zope connects to external relational databases. It also covers features which allow you to treat relational data as though it were Zope objects. Finally, the chapter covers security and performance considerations.
Virtual Hosting Services
This chapter explains how to set up Zope in a "virtual-hosted" environment where Zope subfolders can be served as "top-level" hostnames. It includes examples that allow virtual hosting to be performed "natively" or using Apache's
This chapter describes Zope's "sessioning" services, which allow Zope developers to "keep state" between HTTP requests.
Scalability and ZEO
This chapter covers issues and solutions for building and maintaining large web applications, and focuses on issues of management and scalability. In particular, the Zope Enterprise Option (ZEO) is covered in detail. This chapter shows you the tools and techniques you need to turn a small site into a large-scale site, servicing many simultaneous visitors.
Managing Zope Objects Using External Tools
This chapter explains how to use tools other than your web browser to manipulate Zope objects.
This chapter covers extending Zope by creating your own classes of objects. It discusses ZClasses, and how instances are built from classes. It describes how to build a ZClass and its attendant security and design issues. Finally, it discusses creating Python base classes for ZClasses and describes the base classes that ship with Zope.
This chapter covers Zope maintenance and administration tasks such as database "packing" and Product installation.
Appendix A: DTML Reference
Reference of DTML syntax and commands.
Appendix B: API Reference
Reference of Zope object APIs.
Appendix C: Page Template Reference
Reference of Zope Page Template syntax and commands.
Appendix D: Zope Resources
Reference of "resources" which can be used to further enhance your Zope learning experience.
Appendix E: DTML Name Lookup Rules
Describes DTML's name lookup rules.
Conventions Used in This Book
This book uses the following typographical conventions:
- Italics indicate variables and names and is also used to introduce new terms.
- Fixed width text indicates objects, commands, hyperlinks, and code listings.
Contributors to This Book
Contributors to this book include Amos Latteier, Michel Pelletier, Chris McDonough, Evan Simpson, Tom Deprez, Paul Everitt, Bakhtiar A. Hamid, Geir Baekholt, Paul Winkler, Peter Sabaini, Andrew Veitch, Kevin Carlson, Joel Burton and the Zope Community.
Amos and Michel wrote the entirety of the first edition of this book, and kept the online version of the book current up until Zope 2.5.1.
Tom Deprez provided much-needed editing assistance on the first book edition.
Evan Simpson edited the chapters related to ZPT for the 2.6 edition.
Paul Everitt contributed to the first few chapters of the first edition, edited the first few chapters of the second edition for sanity and contributed some "Maintaining Zope" content for the 2.6 edition.
Bakhtiar Hamid edited the ZEO chapter for the 2.6 edition.
Geir edited and extended the Users and Security chapter for the 2.6 edition.
Paul Winkler with help from Peter Sabaini expertly massaged the Advanced Scripting chapter into coherency for the 2.6 edition.
Peter Sabaini greatly fleshed out and extended the "Maintaining Zope"
and the "Searching and Categorizing Content" chapter for the 2.6 Edition.
Andrew Veitch cheerfully performed the thankless task of editing and extending the Relational Database Connectivity chapter for the 2.6 edition.
Kevin Carlson masterfully edited and expanded the Advanced DTML chapter.
Joel Burton rewrote the ZCatalog chapter late in the 2.6 book's lifetime.
Chris McDonough edited the entirety of the book for the 2.6 edition, entirely rewrote a few chapters and added new material related to object orientation, using the Zope management interface, acquisition, installation, services, virtual hosting, sessions, and DTML name lookup rules.
Anyone who added a comment to the online BackTalk edition of the first online edition of this book contributed greatly. Thank you!
Last modified: 2008/03/28 09:59:40.906000 GMT-4 by
Created: 2006/08/09 12:59:0.837000 GMT-4 by brian.r.brinegar.1.
Type in a few keywords describing what information you are looking for in the text box below.