3.5 Templates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
3.6 Class-based views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
3.7 Migrations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
3.8 Managing files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
3.9 Testing in Django . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
3.10 User authentication in Django . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
3.11 Django’s cache framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392
3.12 Conditional View Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409
3.13 Cryptographic signing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412
3.14 Sending email . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414
3.15 Internationalization and localization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424
3.16 Logging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466
3.17 Pagination . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476
3.18 Porting to Python 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 480
3.19 Security in Django . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486
3.20 Performance and optimization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489
3.21 Serializing Django objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495
3.22 Django settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503
3.23 Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507
3.24 System check framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511
3.25 External packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514
4 “How-to” guides 517
4.1 Authentication using REMOTE_USER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517
4.2 Writing custom django-admin commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518
4.3 Writing custom model fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524
4.4 Custom Lookups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535
4.5 Custom template tags and filters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 540
4.6 Writing a custom storage system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557
4.7 Deploying Django . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558
4.8 Upgrading Django to a newer version . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570
4.9 Error reporting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572
4.10 Providing initial data for models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576
4.11 Running Django on Jython . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577
4.12 Integrating Django with a legacy database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 578
4.13 Outputting CSV with Django . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579
4.14 Outputting PDFs with Django . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582
4.15 Managing static files (e.g. images, JavaScript, CSS) . . . . . . . . . . . . . . . . . . . . . . . . . . 584
4.16 Deploying static files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587
4.17 How to install Django on Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589
4.18 Writing database migrations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 590
5 Django FAQ 595
5.1 FAQ: General . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595
5.2 FAQ: Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 598
5.3 FAQ: Using Django . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 599
5.4 FAQ: Getting Help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 600
5.5 FAQ: Databases and models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601
5.6 FAQ: The admin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 602
5.7 FAQ: Contributing code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604
5.8 Troubleshooting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 605
6 API Reference 607
6.1 Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 607
ii