■CONTENTS
xv
Permissions, Groups, and Messages ..............................274
Permissions ...............................................274
Groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
What’s Next? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
CHAPTER 15 Caching .....................................................277
Setting Up the Cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
Memcached . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
Database Caching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
Filesystem Caching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
Local-Memory Caching .....................................280
Dummy Caching (for Development) . . . . . . . . . . . . . . . . . . . . . . . . . . 280
Using a Custom Cache Back-End . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
CACHE_BACKEND Arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
The Per-Site Cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
The Per-View Cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
Specifying Per-View Cache in the URLconf ....................283
Template Fragment Caching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
The Low-Level Cache API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
Upstream Caches ...............................................286
Using Vary Headers .............................................287
Controlling Cache: Using Other Headers . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
Other Optimizations .............................................290
Order of MIDDLEWARE_CLASSES .................................290
What’s Next? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
CHAPTER 16 django.contrib ..............................................291
The Django Standard Library .....................................291
Sites ..........................................................293
Scenario 1: Reusing Data on Multiple Sites . . . . . . . . . . . . . . . . . . . 293
Scenario 2: Storing Your Site Name/Domain in One Place .......293
How to Use the Sites Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
The Sites Framework’s Capabilities . . . . . . . . . . . . . . . . . . . . . . . . . . 294
CurrentSiteManager. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
How Django Uses the Sites Framework .......................298
Flatpages ......................................................299
Using Flatpages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
Adding, Changing, and Deleting Flatpages . . . . . . . . . . . . . . . . . . . . 301
Using Flatpage Templates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301