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.

Why Should I 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.

How the Book Is Organized

The organization of the book is presented below, as well as a brief summary of each chapter.

Part I: Introducing Zope

These chapters get the reader up and running with Zope. You learn about basic Zope objects and idioms.

Chapter 1: Introducing Zope

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: Using Zope

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: Using Basic Zope Objects

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: Dynamic Content with DTML

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: Using Zope Page Templates

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: Creating Basic Zope Applications

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.

Part II: Creating Web Applications with Zope

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: Users and Security

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: Variables and Advanced DTML

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: Advanced Page Templates

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: Advanced Zope Scripting

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: Searching and Categorizing Content

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: Relational Database Connectivity

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.

Part III: Developing Advanced Web Applications with Zope

The final part of the book deals with advanced topics. You learn how to scale your web application and extend Zope itself.

Chapter 13: Scalability and ZEO

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: Extending Zope

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.

Conventions Used in This Book

This book uses the following typographical conventions:

Italics indicate variables and is also used to introduce new terms.
Fixed width
Fixed width text indicates commands, hyperlinks, and code listings.