123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 |
- ========================================
- The Django admin documentation generator
- ========================================
- .. module:: django.contrib.admindocs
- :synopsis: Django's admin documentation generator.
- .. currentmodule:: django.contrib.admindocs
- Django's :mod:`~django.contrib.admindocs` app pulls documentation from the
- docstrings of models, views, template tags, and template filters for any app in
- :setting:`INSTALLED_APPS` and makes that documentation available from the
- :mod:`Django admin <django.contrib.admin>`.
- Overview
- ========
- To activate the :mod:`~django.contrib.admindocs`, you will need to do
- the following:
- * Add :mod:`django.contrib.admindocs` to your :setting:`INSTALLED_APPS`.
- * Add ``path('admin/doc/', include('django.contrib.admindocs.urls'))`` to
- your ``urlpatterns``. Make sure it's included *before* the
- ``'admin/'`` entry, so that requests to ``/admin/doc/`` don't get
- handled by the latter entry.
- * Install the :pypi:`docutils` 0.19+ package.
- * **Optional:** Using the admindocs bookmarklets requires
- ``django.contrib.admindocs.middleware.XViewMiddleware`` to be installed.
- Once those steps are complete, you can start browsing the documentation by
- going to your admin interface and clicking the "Documentation" link in the
- upper right of the page.
- .. _admindocs-helpers:
- Documentation helpers
- =====================
- The following special markup can be used in your docstrings to easily create
- hyperlinks to other components:
- ================= =======================
- Django Component reStructuredText roles
- ================= =======================
- Models ``:model:`app_label.ModelName```
- Views ``:view:`app_label.view_name```
- Template tags ``:tag:`tagname```
- Template filters ``:filter:`filtername```
- Templates ``:template:`path/to/template.html```
- ================= =======================
- Each of these support custom link text with the format
- ``:role:`link text <link>```. For example, ``:tag:`block <built_in-block>```.
- .. versionchanged:: 5.2
- Support for custom link text was added.
- .. _admindocs-model-reference:
- Model reference
- ===============
- The **models** section of the ``admindocs`` page describes each model that the
- user has access to along with all the fields, properties, and methods available
- on it. Relationships to other models appear as hyperlinks. Descriptions are
- pulled from ``help_text`` attributes on fields or from docstrings on model
- methods.
- A model with useful documentation might look like this::
- class BlogEntry(models.Model):
- """
- Stores a single blog entry, related to :model:`blog.Blog` and
- :model:`auth.User`.
- """
- slug = models.SlugField(help_text="A short label, generally used in URLs.")
- author = models.ForeignKey(
- User,
- models.SET_NULL,
- blank=True,
- null=True,
- )
- blog = models.ForeignKey(Blog, models.CASCADE)
- ...
- def publish(self):
- """Makes the blog entry live on the site."""
- ...
- .. versionchanged:: 5.2
- Access was restricted to only allow users with model view or change
- permissions.
- View reference
- ==============
- Each URL in your site has a separate entry in the ``admindocs`` page, and
- clicking on a given URL will show you the corresponding view. Helpful things
- you can document in your view function docstrings include:
- * A short description of what the view does.
- * The **context**, or a list of variables available in the view's template.
- * The name of the template or templates that are used for that view.
- For example::
- from django.shortcuts import render
- from myapp.models import MyModel
- def my_view(request, slug):
- """
- Display an individual :model:`myapp.MyModel`.
- **Context**
- ``mymodel``
- An instance of :model:`myapp.MyModel`.
- **Template:**
- :template:`myapp/my_template.html`
- """
- context = {"mymodel": MyModel.objects.get(slug=slug)}
- return render(request, "myapp/my_template.html", context)
- Template tags and filters reference
- ===================================
- The **tags** and **filters** ``admindocs`` sections describe all the tags and
- filters that come with Django (in fact, the :ref:`built-in tag reference
- <ref-templates-builtins-tags>` and :ref:`built-in filter reference
- <ref-templates-builtins-filters>` documentation come directly from those
- pages). Any tags or filters that you create or are added by a third-party app
- will show up in these sections as well.
- Template reference
- ==================
- While ``admindocs`` does not include a place to document templates by
- themselves, if you use the ``:template:`path/to/template.html``` syntax in a
- docstring the resulting page will verify the path of that template with
- Django's :ref:`template loaders <template-loaders>`. This can be a handy way to
- check if the specified template exists and to show where on the filesystem that
- template is stored.
- .. _admindocs-bookmarklets:
- Included Bookmarklets
- =====================
- One bookmarklet is available from the ``admindocs`` page:
- Documentation for this page
- Jumps you from any page to the documentation for the view that generates
- that page.
- Using this bookmarklet requires that ``XViewMiddleware`` is installed and that
- you are logged into the :mod:`Django admin <django.contrib.admin>` as a
- :class:`~django.contrib.auth.models.User` with
- :attr:`~django.contrib.auth.models.User.is_staff` set to ``True``.
|