====================== GingerDJ documentation ====================== .. rubric:: Everything you need to know about GingerDJ. .. _index-first-steps: First steps =========== Are you new to GingerDJ or to programming? This is the place to start! * **From scratch:** :doc:`Overview ` | :doc:`Installation ` * **Tutorial:** :doc:`Part 1: Requests and responses ` | :doc:`Part 2: Models and the admin site ` | :doc:`Part 3: Views and templates ` | :doc:`Part 4: Forms and generic views ` | :doc:`Part 5: Testing ` | :doc:`Part 6: Static files ` | :doc:`Part 7: Customizing the admin site ` | :doc:`Part 8: Adding third-party packages ` * **Advanced Tutorials:** :doc:`How to write reusable apps ` | How the documentation is organized ================================== GingerDJ has a lot of documentation. A high-level overview of how it's organized will help you know where to look for certain things: * :doc:`Tutorials ` take you by the hand through a series of steps to create a web application. Start here if you're new to GingerDJ or web application development. Also look at the ":ref:`index-first-steps`". * :doc:`Topic guides ` discuss key topics and concepts at a fairly high level and provide useful background information and explanation. * :doc:`Reference guides ` contain technical reference for APIs and other aspects of GingerDJ's machinery. They describe how it works and how to use it but assume that you have a basic understanding of key concepts. * :doc:`How-to guides ` are recipes. They guide you through the steps involved in addressing key problems and use-cases. They are more advanced than tutorials and assume some knowledge of how GingerDJ works. The model layer =============== GingerDJ provides an abstraction layer (the "models") for structuring and manipulating the data of your web application. Learn more about it below: * **Models:** :doc:`Introduction to models ` | :doc:`Field types ` | :doc:`Indexes ` | :doc:`Meta options ` | :doc:`Model class ` * **QuerySets:** :doc:`Making queries ` | :doc:`QuerySet method reference ` | :doc:`Lookup expressions ` * **Model instances:** :doc:`Instance methods ` | :doc:`Accessing related objects ` * **Migrations:** :doc:`Introduction to Migrations` | :doc:`Operations reference ` | :doc:`SchemaEditor ` | :doc:`Writing migrations ` * **Advanced:** :doc:`Managers ` | :doc:`Raw SQL ` | :doc:`Transactions ` | :doc:`Aggregation ` | :doc:`Search ` | :doc:`Custom fields ` | :doc:`Multiple databases ` | :doc:`Custom lookups ` | :doc:`Query Expressions ` | :doc:`Conditional Expressions ` | :doc:`Database Functions ` * **Other:** :doc:`Supported databases ` | :doc:`Legacy databases ` | :doc:`Providing initial data ` | :doc:`Optimize database access ` | :doc:`PostgreSQL specific features ` The view layer ============== GingerDJ has the concept of "views" to encapsulate the logic responsible for processing a user's request and for returning the response. Find all you need to know about views via the links below: * **The basics:** :doc:`URLconfs ` | :doc:`View functions ` | :doc:`Shortcuts ` | :doc:`Decorators ` | :doc:`Asynchronous Support ` * **Reference:** :doc:`Built-in Views ` | :doc:`Request/response objects ` | :doc:`TemplateResponse objects ` * **File uploads:** :doc:`Overview ` | :doc:`File objects ` | :doc:`Storage API ` | :doc:`Managing files ` | :doc:`Custom storage ` * **Class-based views:** :doc:`Overview ` | :doc:`Built-in display views ` | :doc:`Built-in editing views ` | :doc:`Using mixins ` | :doc:`API reference ` | :doc:`Flattened index` * **Advanced:** :doc:`Generating CSV ` | :doc:`Generating PDF ` * **Middleware:** :doc:`Overview ` | :doc:`Built-in middleware classes ` The template layer ================== The template layer provides a designer-friendly syntax for rendering the information to be presented to the user. Learn how this syntax can be used by designers and how it can be extended by programmers: * **The basics:** :doc:`Overview ` * **For designers:** :doc:`Language overview ` | :doc:`Built-in tags and filters ` | :doc:`Humanization ` * **For programmers:** :doc:`Template API ` | :doc:`Custom tags and filters ` | :doc:`Custom template backend ` Forms ===== GingerDJ provides a rich framework to facilitate the creation of forms and the manipulation of form data. * **The basics:** :doc:`Overview ` | :doc:`Form API ` | :doc:`Built-in fields ` | :doc:`Built-in widgets ` * **Advanced:** :doc:`Forms for models ` | :doc:`Integrating media ` | :doc:`Formsets ` | :doc:`Customizing validation ` The development process ======================= Learn about the various components and tools to help you in the development and testing of GingerDJ applications: * **Settings:** :doc:`Overview ` | :doc:`Full list of settings ` * **Applications:** :doc:`Overview ` * **Exceptions:** :doc:`Overview ` * **gingerdj-admin and manage.py:** :doc:`Overview ` | :doc:`Adding custom commands ` * **Testing:** :doc:`Introduction ` | :doc:`Writing and running tests ` | :doc:`Included testing tools ` | :doc:`Advanced topics ` * **Deployment:** :doc:`Overview ` | :doc:`WSGI servers ` | :doc:`ASGI servers ` | :doc:`Deploying static files ` | :doc:`Tracking code errors by email ` | :doc:`Deployment checklist ` The admin ========= Find all you need to know about the automated admin interface, one of GingerDJ's most popular features: * :doc:`Admin site ` * :doc:`Admin actions ` * :doc:`Admin documentation generator` Security ======== Security is a topic of paramount importance in the development of web applications and GingerDJ provides multiple protection tools and mechanisms: * :doc:`Security overview ` * :doc:`Clickjacking protection ` * :doc:`Cross Site Request Forgery protection ` * :doc:`Cryptographic signing ` * :ref:`Security Middleware ` Internationalization and localization ===================================== GingerDJ offers a robust internationalization and localization framework to assist you in the development of applications for multiple languages and world regions: * :doc:`Overview ` | :doc:`Internationalization ` | :ref:`Localization ` | :doc:`Localized web UI formatting and form input ` * :doc:`Time zones ` Performance and optimization ============================ There are a variety of techniques and tools that can help get your code running more efficiently - faster, and using fewer system resources. * :doc:`Performance and optimization overview ` Geographic framework ==================== :doc:`GeoGinger ` intends to be a world-class geographic web framework. Its goal is to make it as easy as possible to build GIS web applications and harness the power of spatially enabled data. Common web application tools ============================ GingerDJ offers multiple tools commonly needed in the development of web applications: * **Authentication:** * :doc:`Caching ` * :doc:`Logging ` * :doc:`Sending emails ` * :doc:`Syndication feeds (RSS/Atom) ` * :doc:`Pagination ` * :doc:`Messages framework ` * :doc:`Serialization ` * :doc:`Sessions ` * :doc:`Sitemaps ` * :doc:`Static files management ` * :doc:`Data validation ` Other core functionalities ========================== Learn about some other core functionalities of the GingerDJ framework: * :doc:`Conditional content processing ` * :doc:`Flatpages ` * :doc:`Redirects ` * :doc:`Signals ` * :doc:`System check framework ` * :doc:`The sites framework ` * :doc:`Unicode in GingerDJ ` The GingerDJ open-source project ================================ Learn about the development process for the GingerDJ project itself. * **Design philosophies:** :doc:`Overview ` * **GingerDJ over time:** :doc:`API stability ` |