Welcome to The Zope Book. This book is designed to introduce you to Zope and its uses. Zope is an open-source web application server. If you are interested in writing web pages, programming web scripts, using databases, managing content, or doing a collaborative web development task, then you should read this book.
This book is meant to appeal to both current Zope users and people new to Zope:
The first part of the book explains to you how you use Zope through its web managment interface to manage dynamic content. The concepts in these chapters are are fundamental Zope concepts that show you how to use Zope to publish content on the web.
Some later sections of the book cover advanced topics such as relational databases, scripting with various programming languages, and XML. These chapters don't teach relational databases, programming, or XML, they simply show you how to use these technologies with Zope.
The organization of the book is presented below, as well as a brief summary of each chapter.
These chapters get the reader up and running with Zope. You learn about basic Zope objects and idioms.
Chapter 1 explains what Zope is and who it's for. It describes in broad strokes what you can do with Zope. You also learn about the differences between Zope and other web application servers.
Chapter 2 covers the most important Zope concepts. By the end of this chapter you should be able to use Zope to create and manage simple yet powerful web applications.
Chapter 3 introduces objects, which are the most important elements of Zope. In it we cover what an object is in general, and then we introduce the basic Zope objects: folders, DTML documents, DTML methods, files, and images.
Chapter 4 introduces DTML, Zope's tag-based scripting language. In it we describe DTML's use for templating and scripting and its place in relation to other ways to script Zope. 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.
Chapter 5 introduces Zope Page Templates, a new tool to create dynamic HTML. This chapter shows you how to create and edit page templates. It also introduces basic template statements that let you insert dymanic content.
Chapter 6 walks the reader through several real-world examples of building a Zope application. It provides plenty of examples showing how to use Zope objects and how they can work together to form basic applications.
These chapters provide a more in depth look at advanced Zope topics. They cover the material necessary to build real web applications with Zope.
Chapter 7 looks at how Zope handles users, authentication, authorization, and other security-related matters. Security is central to Zope's design and should be central to the web applications that you create with Zope.
Chapter 8 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.
Chapter 9 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. By the end of this chapter you'll know all there is about page templates.
Chapter 10 covers scripting Zope with Python and Perl. In it we cover how to write business logic in Zope using more powerful tools 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.
Chapter 11 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 meta-data and search results. This chapter shows you how to create a powerful and easy to use information architecture.
Chapter 12 describes how Zope connects to external relational databases. It shows you how to connect to and query 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.
The final part of the book deals with advanced topics. You learn how to scale your web application and extend Zope itself.
Chapter 13 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 millions of visitors.
Chapter 14 covers extending Zope by creating your own classes of objects. It discusses ZClasses, and how instances are built from classes. It describes step by step how to build a ZClass and the 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 shows you how to take Zope to the next level, by tailoring Zope to your needs.