Preface

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.

  1. Introducing Zope

    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.

  2. Zope Concepts and Architecture

    This chapter explains fundamental Zope concepts and describes some of Zope's architecture.

  3. 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.

  4. Object Orientation

    This chapter explains the concept of object orientation, which is the development methodology most often used to create Zope applications.

  5. 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.

  6. 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.

  7. Acquisition

    This chapter introduces acquisition, which is Zope's mechanism for sharing site behavior and content via "containment".

  8. Basic DTML

    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.

  9. 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.

  10. 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.

  11. Users and Security

    This chapter looks at how Zope handles users, authentication, authorization, and other security-related matters.

  12. Advanced DTML

    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.

  13. 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.

  14. 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.

  15. Zope Services

    This chapter covers Zope objects which are "services" that don't readily fit into any of the basic "content", "presentation" or "logic" object groups.

  16. 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.

  17. 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.

  18. 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 mod_rewrite facility.

  19. Sessions

    This chapter describes Zope's "sessioning" services, which allow Zope developers to "keep state" between HTTP requests.

  20. 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.

  21. Managing Zope Objects Using External Tools

    This chapter explains how to use tools other than your web browser to manipulate Zope objects.

  22. Extending Zope

    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.

  23. Maintaining Zope

    This chapter covers Zope maintenance and administration tasks such as database "packing" and Product installation.

  24. Appendix A: DTML Reference

    Reference of DTML syntax and commands.

  25. Appendix B: API Reference

    Reference of Zope object APIs.

  26. Appendix C: Page Template Reference

    Reference of Zope Page Template syntax and commands.

  27. Appendix D: Zope Resources

    Reference of "resources" which can be used to further enhance your Zope learning experience.

  28. Appendix E: DTML Name Lookup Rules

    Describes DTML's name lookup rules.

Conventions Used in This Book

This book uses the following typographical conventions:

Italic
Italics indicate variables and names and is also used to introduce new terms.
Fixed width
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!