{"title":"Django documentation","version":"3.1","locale":"en","docname":"index","url":"/en/3.1/","canonical":"https://djangodocs.dev/en/3.1/","summary":"Everything you need to know about Django. First steps Link to this heading # Are you new to Django or to programming? This is the place to start! From scratch:…","html":"<h1>Django documentation<a class=\"heading-anchor\" href=\"#django-documentation\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p class=\"rubric\">Everything you need to know about Django.</p>\n<section id=\"first-steps\">\n<span id=\"index-first-steps\"></span><h2>First steps<a class=\"heading-anchor\" href=\"#first-steps\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Are you new to Django or to programming? This is the place to start!</p>\n<ul class=\"simple\">\n<li><p><strong>From scratch:</strong>\n<a class=\"reference internal\" href=\"/en/3.1/intro/overview/\"><span class=\"doc\">Overview</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/intro/install/\"><span class=\"doc\">Installation</span></a></p></li>\n<li><p><strong>Tutorial:</strong>\n<a class=\"reference internal\" href=\"/en/3.1/intro/tutorial01/\"><span class=\"doc\">Part 1: Requests and responses</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/intro/tutorial02/\"><span class=\"doc\">Part 2: Models and the admin site</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/intro/tutorial03/\"><span class=\"doc\">Part 3: Views and templates</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/intro/tutorial04/\"><span class=\"doc\">Part 4: Forms and generic views</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/intro/tutorial05/\"><span class=\"doc\">Part 5: Testing</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/intro/tutorial06/\"><span class=\"doc\">Part 6: Static files</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/intro/tutorial07/\"><span class=\"doc\">Part 7: Customizing the admin site</span></a></p></li>\n<li><p><strong>Advanced Tutorials:</strong>\n<a class=\"reference internal\" href=\"/en/3.1/intro/reusable-apps/\"><span class=\"doc\">How to write reusable apps</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/intro/contributing/\"><span class=\"doc\">Writing your first patch for Django</span></a></p></li>\n</ul>\n</section>\n<section id=\"getting-help\">\n<h2>Getting help<a class=\"heading-anchor\" href=\"#getting-help\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Having trouble? We’d like to help!</p>\n<ul class=\"simple\">\n<li><p>Try the <a class=\"reference internal\" href=\"/en/3.1/faq/\"><span class=\"doc\">FAQ</span></a> – it’s got answers to many common questions.</p></li>\n<li><p>Looking for specific information? Try the <a class=\"reference internal\" href=\"/en/3.1/genindex/\"><span class=\"std std-ref\">Index</span></a>, <a class=\"reference internal\" href=\"/en/3.1/py-modindex/\"><span class=\"std std-ref\">Module Index</span></a> or\nthe <a class=\"reference internal\" href=\"/en/3.1/contents/\"><span class=\"doc\">detailed table of contents</span></a>.</p></li>\n<li><p>Not found anything? See <a class=\"reference internal\" href=\"/en/3.1/faq/help/\"><span class=\"doc\">FAQ: Getting Help</span></a> for information on getting support\nand asking questions to the community.</p></li>\n<li><p>Report bugs with Django in our <a class=\"reference external\" href=\"https://code.djangoproject.com/\">ticket tracker</a>.</p></li>\n</ul>\n</section>\n<section id=\"how-the-documentation-is-organized\">\n<h2>How the documentation is organized<a class=\"heading-anchor\" href=\"#how-the-documentation-is-organized\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Django has a lot of documentation. A high-level overview of how it’s organized\nwill help you know where to look for certain things:</p>\n<ul class=\"simple\">\n<li><p><a class=\"reference internal\" href=\"/en/3.1/intro/\"><span class=\"doc\">Tutorials</span></a> take you by the hand through a series of\nsteps to create a Web application. Start here if you’re new to Django or Web\napplication development. Also look at the “<a class=\"reference internal\" href=\"#index-first-steps\"><span class=\"std std-ref\">First steps</span></a>”.</p></li>\n<li><p><a class=\"reference internal\" href=\"/en/3.1/topics/\"><span class=\"doc\">Topic guides</span></a> discuss key topics and concepts at a\nfairly high level and provide useful background information and explanation.</p></li>\n<li><p><a class=\"reference internal\" href=\"/en/3.1/ref/\"><span class=\"doc\">Reference guides</span></a> contain technical reference for APIs and\nother aspects of Django’s machinery. They describe how it works and how to\nuse it but assume that you have a basic understanding of key concepts.</p></li>\n<li><p><a class=\"reference internal\" href=\"/en/3.1/howto/\"><span class=\"doc\">How-to guides</span></a> are recipes. They guide you through the\nsteps involved in addressing key problems and use-cases. They are more\nadvanced than tutorials and assume some knowledge of how Django works.</p></li>\n</ul>\n</section>\n<section id=\"the-model-layer\">\n<h2>The model layer<a class=\"heading-anchor\" href=\"#the-model-layer\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Django provides an abstraction layer (the “models”) for structuring and\nmanipulating the data of your Web application. Learn more about it below:</p>\n<ul class=\"simple\">\n<li><p><strong>Models:</strong>\n<a class=\"reference internal\" href=\"/en/3.1/topics/db/models/\"><span class=\"doc\">Introduction to models</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/ref/models/fields/\"><span class=\"doc\">Field types</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/ref/models/indexes/\"><span class=\"doc\">Indexes</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/ref/models/options/\"><span class=\"doc\">Meta options</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/ref/models/class/\"><span class=\"doc\">Model class</span></a></p></li>\n<li><p><strong>QuerySets:</strong>\n<a class=\"reference internal\" href=\"/en/3.1/topics/db/queries/\"><span class=\"doc\">Making queries</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/ref/models/querysets/\"><span class=\"doc\">QuerySet method reference</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/ref/models/lookups/\"><span class=\"doc\">Lookup expressions</span></a></p></li>\n<li><p><strong>Model instances:</strong>\n<a class=\"reference internal\" href=\"/en/3.1/ref/models/instances/\"><span class=\"doc\">Instance methods</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/ref/models/relations/\"><span class=\"doc\">Accessing related objects</span></a></p></li>\n<li><p><strong>Migrations:</strong>\n<a class=\"reference internal\" href=\"/en/3.1/topics/migrations/\"><span class=\"doc\">Introduction to Migrations</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/ref/migration-operations/\"><span class=\"doc\">Operations reference</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/ref/schema-editor/\"><span class=\"doc\">SchemaEditor</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/howto/writing-migrations/\"><span class=\"doc\">Writing migrations</span></a></p></li>\n<li><p><strong>Advanced:</strong>\n<a class=\"reference internal\" href=\"/en/3.1/topics/db/managers/\"><span class=\"doc\">Managers</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/topics/db/sql/\"><span class=\"doc\">Raw SQL</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/topics/db/transactions/\"><span class=\"doc\">Transactions</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/topics/db/aggregation/\"><span class=\"doc\">Aggregation</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/topics/db/search/\"><span class=\"doc\">Search</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/howto/custom-model-fields/\"><span class=\"doc\">Custom fields</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/topics/db/multi-db/\"><span class=\"doc\">Multiple databases</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/howto/custom-lookups/\"><span class=\"doc\">Custom lookups</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/ref/models/expressions/\"><span class=\"doc\">Query Expressions</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/ref/models/conditional-expressions/\"><span class=\"doc\">Conditional Expressions</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/ref/models/database-functions/\"><span class=\"doc\">Database Functions</span></a></p></li>\n<li><p><strong>Other:</strong>\n<a class=\"reference internal\" href=\"/en/3.1/ref/databases/\"><span class=\"doc\">Supported databases</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/howto/legacy-databases/\"><span class=\"doc\">Legacy databases</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/howto/initial-data/\"><span class=\"doc\">Providing initial data</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/topics/db/optimization/\"><span class=\"doc\">Optimize database access</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/ref/contrib/postgres/\"><span class=\"doc\">PostgreSQL specific features</span></a></p></li>\n</ul>\n</section>\n<section id=\"the-view-layer\">\n<h2>The view layer<a class=\"heading-anchor\" href=\"#the-view-layer\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Django has the concept of “views” to encapsulate the logic responsible for\nprocessing a user’s request and for returning the response. Find all you need\nto know about views via the links below:</p>\n<ul class=\"simple\">\n<li><p><strong>The basics:</strong>\n<a class=\"reference internal\" href=\"/en/3.1/topics/http/urls/\"><span class=\"doc\">URLconfs</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/topics/http/views/\"><span class=\"doc\">View functions</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/topics/http/shortcuts/\"><span class=\"doc\">Shortcuts</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/topics/http/decorators/\"><span class=\"doc\">Decorators</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/topics/async/\"><span class=\"doc\">Asynchronous Support</span></a></p></li>\n<li><p><strong>Reference:</strong>\n<a class=\"reference internal\" href=\"/en/3.1/ref/views/\"><span class=\"doc\">Built-in Views</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/ref/request-response/\"><span class=\"doc\">Request/response objects</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/ref/template-response/\"><span class=\"doc\">TemplateResponse objects</span></a></p></li>\n<li><p><strong>File uploads:</strong>\n<a class=\"reference internal\" href=\"/en/3.1/topics/http/file-uploads/\"><span class=\"doc\">Overview</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/ref/files/file/\"><span class=\"doc\">File objects</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/ref/files/storage/\"><span class=\"doc\">Storage API</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/topics/files/\"><span class=\"doc\">Managing files</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/howto/custom-file-storage/\"><span class=\"doc\">Custom storage</span></a></p></li>\n<li><p><strong>Class-based views:</strong>\n<a class=\"reference internal\" href=\"/en/3.1/topics/class-based-views/\"><span class=\"doc\">Overview</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/topics/class-based-views/generic-display/\"><span class=\"doc\">Built-in display views</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/topics/class-based-views/generic-editing/\"><span class=\"doc\">Built-in editing views</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/topics/class-based-views/mixins/\"><span class=\"doc\">Using mixins</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/ref/class-based-views/\"><span class=\"doc\">API reference</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/ref/class-based-views/flattened-index/\"><span class=\"doc\">Flattened index</span></a></p></li>\n<li><p><strong>Advanced:</strong>\n<a class=\"reference internal\" href=\"/en/3.1/howto/outputting-csv/\"><span class=\"doc\">Generating CSV</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/howto/outputting-pdf/\"><span class=\"doc\">Generating PDF</span></a></p></li>\n<li><p><strong>Middleware:</strong>\n<a class=\"reference internal\" href=\"/en/3.1/topics/http/middleware/\"><span class=\"doc\">Overview</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/ref/middleware/\"><span class=\"doc\">Built-in middleware classes</span></a></p></li>\n</ul>\n</section>\n<section id=\"the-template-layer\">\n<h2>The template layer<a class=\"heading-anchor\" href=\"#the-template-layer\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>The template layer provides a designer-friendly syntax for rendering the\ninformation to be presented to the user. Learn how this syntax can be used by\ndesigners and how it can be extended by programmers:</p>\n<ul class=\"simple\">\n<li><p><strong>The basics:</strong>\n<a class=\"reference internal\" href=\"/en/3.1/topics/templates/\"><span class=\"doc\">Overview</span></a></p></li>\n<li><p><strong>For designers:</strong>\n<a class=\"reference internal\" href=\"/en/3.1/ref/templates/language/\"><span class=\"doc\">Language overview</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/ref/templates/builtins/\"><span class=\"doc\">Built-in tags and filters</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/ref/contrib/humanize/\"><span class=\"doc\">Humanization</span></a></p></li>\n<li><p><strong>For programmers:</strong>\n<a class=\"reference internal\" href=\"/en/3.1/ref/templates/api/\"><span class=\"doc\">Template API</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/howto/custom-template-tags/\"><span class=\"doc\">Custom tags and filters</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/howto/custom-template-backend/\"><span class=\"doc\">Custom template backend</span></a></p></li>\n</ul>\n</section>\n<section id=\"forms\">\n<h2>Forms<a class=\"heading-anchor\" href=\"#forms\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Django provides a rich framework to facilitate the creation of forms and the\nmanipulation of form data.</p>\n<ul class=\"simple\">\n<li><p><strong>The basics:</strong>\n<a class=\"reference internal\" href=\"/en/3.1/topics/forms/\"><span class=\"doc\">Overview</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/ref/forms/api/\"><span class=\"doc\">Form API</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/ref/forms/fields/\"><span class=\"doc\">Built-in fields</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/ref/forms/widgets/\"><span class=\"doc\">Built-in widgets</span></a></p></li>\n<li><p><strong>Advanced:</strong>\n<a class=\"reference internal\" href=\"/en/3.1/topics/forms/modelforms/\"><span class=\"doc\">Forms for models</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/topics/forms/media/\"><span class=\"doc\">Integrating media</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/topics/forms/formsets/\"><span class=\"doc\">Formsets</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/ref/forms/validation/\"><span class=\"doc\">Customizing validation</span></a></p></li>\n</ul>\n</section>\n<section id=\"the-development-process\">\n<h2>The development process<a class=\"heading-anchor\" href=\"#the-development-process\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Learn about the various components and tools to help you in the development and\ntesting of Django applications:</p>\n<ul class=\"simple\">\n<li><p><strong>Settings:</strong>\n<a class=\"reference internal\" href=\"/en/3.1/topics/settings/\"><span class=\"doc\">Overview</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/ref/settings/\"><span class=\"doc\">Full list of settings</span></a></p></li>\n<li><p><strong>Applications:</strong>\n<a class=\"reference internal\" href=\"/en/3.1/ref/applications/\"><span class=\"doc\">Overview</span></a></p></li>\n<li><p><strong>Exceptions:</strong>\n<a class=\"reference internal\" href=\"/en/3.1/ref/exceptions/\"><span class=\"doc\">Overview</span></a></p></li>\n<li><p><strong>django-admin and manage.py:</strong>\n<a class=\"reference internal\" href=\"/en/3.1/ref/django-admin/\"><span class=\"doc\">Overview</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/howto/custom-management-commands/\"><span class=\"doc\">Adding custom commands</span></a></p></li>\n<li><p><strong>Testing:</strong>\n<a class=\"reference internal\" href=\"/en/3.1/topics/testing/\"><span class=\"doc\">Introduction</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/topics/testing/overview/\"><span class=\"doc\">Writing and running tests</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/topics/testing/tools/\"><span class=\"doc\">Included testing tools</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/topics/testing/advanced/\"><span class=\"doc\">Advanced topics</span></a></p></li>\n<li><p><strong>Deployment:</strong>\n<a class=\"reference internal\" href=\"/en/3.1/howto/deployment/\"><span class=\"doc\">Overview</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/howto/deployment/wsgi/\"><span class=\"doc\">WSGI servers</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/howto/deployment/asgi/\"><span class=\"doc\">ASGI servers</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/howto/static-files/deployment/\"><span class=\"doc\">Deploying static files</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/howto/error-reporting/\"><span class=\"doc\">Tracking code errors by email</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/howto/deployment/checklist/\"><span class=\"doc\">Deployment checklist</span></a></p></li>\n</ul>\n</section>\n<section id=\"the-admin\">\n<h2>The admin<a class=\"heading-anchor\" href=\"#the-admin\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Find all you need to know about the automated admin interface, one of Django’s\nmost popular features:</p>\n<ul class=\"simple\">\n<li><p><a class=\"reference internal\" href=\"/en/3.1/ref/contrib/admin/\"><span class=\"doc\">Admin site</span></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/en/3.1/ref/contrib/admin/actions/\"><span class=\"doc\">Admin actions</span></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/en/3.1/ref/contrib/admin/admindocs/\"><span class=\"doc\">Admin documentation generator</span></a></p></li>\n</ul>\n</section>\n<section id=\"security\">\n<h2>Security<a class=\"heading-anchor\" href=\"#security\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Security is a topic of paramount importance in the development of Web\napplications and Django provides multiple protection tools and mechanisms:</p>\n<ul class=\"simple\">\n<li><p><a class=\"reference internal\" href=\"/en/3.1/topics/security/\"><span class=\"doc\">Security overview</span></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/en/3.1/releases/security/\"><span class=\"doc\">Disclosed security issues in Django</span></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/en/3.1/ref/clickjacking/\"><span class=\"doc\">Clickjacking protection</span></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/en/3.1/ref/csrf/\"><span class=\"doc\">Cross Site Request Forgery protection</span></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/en/3.1/topics/signing/\"><span class=\"doc\">Cryptographic signing</span></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/en/3.1/ref/middleware/#security-middleware\"><span class=\"std std-ref\">Security Middleware</span></a></p></li>\n</ul>\n</section>\n<section id=\"internationalization-and-localization\">\n<h2>Internationalization and localization<a class=\"heading-anchor\" href=\"#internationalization-and-localization\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Django offers a robust internationalization and localization framework to\nassist you in the development of applications for multiple languages and world\nregions:</p>\n<ul class=\"simple\">\n<li><p><a class=\"reference internal\" href=\"/en/3.1/topics/i18n/\"><span class=\"doc\">Overview</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/topics/i18n/translation/\"><span class=\"doc\">Internationalization</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/topics/i18n/translation/#how-to-create-language-files\"><span class=\"std std-ref\">Localization</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/topics/i18n/formatting/\"><span class=\"doc\">Localized Web UI formatting and form input</span></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/en/3.1/topics/i18n/timezones/\"><span class=\"doc\">Time zones</span></a></p></li>\n</ul>\n</section>\n<section id=\"performance-and-optimization\">\n<h2>Performance and optimization<a class=\"heading-anchor\" href=\"#performance-and-optimization\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>There are a variety of techniques and tools that can help get your code running\nmore efficiently - faster, and using fewer system resources.</p>\n<ul class=\"simple\">\n<li><p><a class=\"reference internal\" href=\"/en/3.1/topics/performance/\"><span class=\"doc\">Performance and optimization overview</span></a></p></li>\n</ul>\n</section>\n<section id=\"geographic-framework\">\n<h2>Geographic framework<a class=\"heading-anchor\" href=\"#geographic-framework\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p><a class=\"reference internal\" href=\"/en/3.1/ref/contrib/gis/\"><span class=\"doc\">GeoDjango</span></a> intends to be a world-class geographic\nWeb framework. Its goal is to make it as easy as possible to build GIS Web\napplications and harness the power of spatially enabled data.</p>\n</section>\n<section id=\"common-web-application-tools\">\n<h2>Common Web application tools<a class=\"heading-anchor\" href=\"#common-web-application-tools\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Django offers multiple tools commonly needed in the development of Web\napplications:</p>\n<ul class=\"simple\">\n<li><p><strong>Authentication:</strong>\n<a class=\"reference internal\" href=\"/en/3.1/topics/auth/\"><span class=\"doc\">Overview</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/topics/auth/default/\"><span class=\"doc\">Using the authentication system</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/topics/auth/passwords/\"><span class=\"doc\">Password management</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/topics/auth/customizing/\"><span class=\"doc\">Customizing authentication</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/ref/contrib/auth/\"><span class=\"doc\">API Reference</span></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/en/3.1/topics/cache/\"><span class=\"doc\">Caching</span></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/en/3.1/topics/logging/\"><span class=\"doc\">Logging</span></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/en/3.1/topics/email/\"><span class=\"doc\">Sending emails</span></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/en/3.1/ref/contrib/syndication/\"><span class=\"doc\">Syndication feeds (RSS/Atom)</span></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/en/3.1/topics/pagination/\"><span class=\"doc\">Pagination</span></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/en/3.1/ref/contrib/messages/\"><span class=\"doc\">Messages framework</span></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/en/3.1/topics/serialization/\"><span class=\"doc\">Serialization</span></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/en/3.1/topics/http/sessions/\"><span class=\"doc\">Sessions</span></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/en/3.1/ref/contrib/sitemaps/\"><span class=\"doc\">Sitemaps</span></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/en/3.1/ref/contrib/staticfiles/\"><span class=\"doc\">Static files management</span></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/en/3.1/ref/validators/\"><span class=\"doc\">Data validation</span></a></p></li>\n</ul>\n</section>\n<section id=\"other-core-functionalities\">\n<h2>Other core functionalities<a class=\"heading-anchor\" href=\"#other-core-functionalities\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Learn about some other core functionalities of the Django framework:</p>\n<ul class=\"simple\">\n<li><p><a class=\"reference internal\" href=\"/en/3.1/topics/conditional-view-processing/\"><span class=\"doc\">Conditional content processing</span></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/en/3.1/ref/contrib/contenttypes/\"><span class=\"doc\">Content types and generic relations</span></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/en/3.1/ref/contrib/flatpages/\"><span class=\"doc\">Flatpages</span></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/en/3.1/ref/contrib/redirects/\"><span class=\"doc\">Redirects</span></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/en/3.1/topics/signals/\"><span class=\"doc\">Signals</span></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/en/3.1/topics/checks/\"><span class=\"doc\">System check framework</span></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/en/3.1/ref/contrib/sites/\"><span class=\"doc\">The sites framework</span></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/en/3.1/ref/unicode/\"><span class=\"doc\">Unicode in Django</span></a></p></li>\n</ul>\n</section>\n<section id=\"the-django-open-source-project\">\n<h2>The Django open-source project<a class=\"heading-anchor\" href=\"#the-django-open-source-project\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Learn about the development process for the Django project itself and about how\nyou can contribute:</p>\n<ul class=\"simple\">\n<li><p><strong>Community:</strong>\n<a class=\"reference internal\" href=\"/en/3.1/internals/contributing/\"><span class=\"doc\">How to get involved</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/internals/release-process/\"><span class=\"doc\">The release process</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/internals/organization/\"><span class=\"doc\">Team organization</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/internals/git/\"><span class=\"doc\">The Django source code repository</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/internals/security/\"><span class=\"doc\">Security policies</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/internals/mailing-lists/\"><span class=\"doc\">Mailing lists</span></a></p></li>\n<li><p><strong>Design philosophies:</strong>\n<a class=\"reference internal\" href=\"/en/3.1/misc/design-philosophies/\"><span class=\"doc\">Overview</span></a></p></li>\n<li><p><strong>Documentation:</strong>\n<a class=\"reference internal\" href=\"/en/3.1/internals/contributing/writing-documentation/\"><span class=\"doc\">About this documentation</span></a></p></li>\n<li><p><strong>Third-party distributions:</strong>\n<a class=\"reference internal\" href=\"/en/3.1/misc/distributions/\"><span class=\"doc\">Overview</span></a></p></li>\n<li><p><strong>Django over time:</strong>\n<a class=\"reference internal\" href=\"/en/3.1/misc/api-stability/\"><span class=\"doc\">API stability</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/releases/\"><span class=\"doc\">Release notes and upgrading instructions</span></a> |\n<a class=\"reference internal\" href=\"/en/3.1/internals/deprecation/\"><span class=\"doc\">Deprecation Timeline</span></a></p></li>\n</ul>\n</section>","rootId":"django-documentation","toc":[{"title":"First steps","anchor":"first-steps","children":[]},{"title":"Getting help","anchor":"getting-help","children":[]},{"title":"How the documentation is organized","anchor":"how-the-documentation-is-organized","children":[]},{"title":"The model layer","anchor":"the-model-layer","children":[]},{"title":"The view layer","anchor":"the-view-layer","children":[]},{"title":"The template layer","anchor":"the-template-layer","children":[]},{"title":"Forms","anchor":"forms","children":[]},{"title":"The development process","anchor":"the-development-process","children":[]},{"title":"The admin","anchor":"the-admin","children":[]},{"title":"Security","anchor":"security","children":[]},{"title":"Internationalization and localization","anchor":"internationalization-and-localization","children":[]},{"title":"Performance and optimization","anchor":"performance-and-optimization","children":[]},{"title":"Geographic framework","anchor":"geographic-framework","children":[]},{"title":"Common Web application tools","anchor":"common-web-application-tools","children":[]},{"title":"Other core functionalities","anchor":"other-core-functionalities","children":[]},{"title":"The Django open-source project","anchor":"the-django-open-source-project","children":[]}],"breadcrumbs":[],"prev":{"docname":"contents","title":"Django documentation contents","url":"/en/3.1/contents/"},"next":{"docname":"intro/index","title":"Getting started","url":"/en/3.1/intro/"},"formats":{"html":"/en/3.1/","markdown":"/en/3.1/index.md","json":"/en/3.1/index.json"},"source":"https://github.com/django/django/blob/stable/3.1.x/docs/index.txt","official":"https://docs.djangoproject.com/en/3.1/","inVersions":["dev","6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1","3.0","2.2","2.1","2.0","1.11","1.10","1.9","1.8"],"inLocales":["en","zh-hans","fr","ja","id","pt-br","ko","es","el","pl"]}