3.5 Templates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
3.6 Class-based views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
3.7 Migrations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
3.8 Managing files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
3.9 Testing in Django . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322
3.10 User authentication in Django . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
3.11 Django’s cache framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411
3.12 Conditional View Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429
3.13 Cryptographic signing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432
3.14 Sending email . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435
3.15 Internationalization and localization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445
3.16 Logging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489
3.17 Pagination . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499
3.18 Security in Django . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504
3.19 Performance and optimization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507
3.20 Serializing Django objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513
3.21 Django settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521
3.22 Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526
3.23 System check framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530
3.24 External packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533
4 “How-to” guides 535
4.1 Authentication using REMOTE_USER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535
4.2 Writing custom django-admin commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537
4.3 Writing custom model fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542
4.4 Custom Lookups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553
4.5 Custom template tags and filters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558
4.6 Writing a custom storage system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574
4.7 Deploying Django . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575
4.8 Upgrading Django to a newer version . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587
4.9 Error reporting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589
4.10 Providing initial data for models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593
4.11 Django on Jython . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594
4.12 Integrating Django with a legacy database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594
4.13 Outputting CSV with Django . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596
4.14 Outputting PDFs with Django . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 598
4.15 Overriding templates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 600
4.16 Managing static files (e.g. images, JavaScript, CSS) . . . . . . . . . . . . . . . . . . . . . . . . . . 602
4.17 Deploying static files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604
4.18 How to install Django on Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 606
4.19 Writing database migrations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 608
5 Django FAQ 613
5.1 FAQ: General . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 613
5.2 FAQ: Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 616
5.3 FAQ: Using Django . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 617
5.4 FAQ: Getting Help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 618
5.5 FAQ: Databases and models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 619
5.6 FAQ: The admin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 620
5.7 FAQ: Contributing code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 622
5.8 Troubleshooting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 623
6 API Reference 625
6.1 Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625
ii