Генератор документации для администраторов Django¶
Приложение Django admindocs
извлекает документацию из docstrings моделей, представлений, тегов шаблонов и фильтров шаблонов для любого приложения в INSTALLED_APPS
и делает эту документацию доступной из Django admin
.
Быстрый обзор¶
Чтобы активировать admindocs
, вам нужно сделать следующее:
- Добавьте
django.contrib.admindocs
к вашемуINSTALLED_APPS
. - Добавьте
path('admin/doc/', include('django.contrib.admindocs.urls'))
к вашемуurlpatterns
. Убедитесь, что он включен перед записью'admin/'
, чтобы запросы к/admin/doc/
не обрабатывались последней записью. - Установите модуль docutils Python (https://docutils.sourceforge.io/).
- Опционально: Использование букмарклетов admindocs требует установки
django.contrib.admindocs.middleware.XViewMiddleware
.
После выполнения этих шагов вы можете начать просмотр документации, перейдя в интерфейс администратора и нажав на ссылку «Документация» в правом верхнем углу страницы.
Помощники в работе с документацией¶
Следующая специальная разметка может использоваться в ваших документах, чтобы легко создавать гиперссылки на другие компоненты:
Компонент Django | роли reStructuredText |
---|---|
Модели | :model:`app_label.ModelName` |
Представления | :view:`app_label.view_name` |
Теги шаблона | :tag:`tagname` |
Шаблонные фильтры | :filter:`filtername` |
Шаблоны | :template:`path/to/template.html` |
Ссылка на модель¶
Раздел модели страницы admindocs
описывает каждую модель в системе вместе со всеми полями, свойствами и методами, доступными в ней. Связи с другими моделями отображаются в виде гиперссылок. Описания берутся из атрибутов help_text
полей или из документаций методов модели.
Модель с полезной документацией может выглядеть следующим образом:
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."""
...
Посмотреть ссылку¶
Каждый URL на вашем сайте имеет отдельную запись на странице admindocs
, и щелчок на данном URL покажет вам соответствующее представление. Полезные вещи, которые вы можете документировать в своих документах функций представления, включают:
- Краткое описание того, что делает вид.
- контекст, или список переменных, доступных в шаблоне представления.
- Имя шаблона или шаблонов, которые используются для данного представления.
Например:
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)
Ссылка на теги и фильтры шаблонов¶
Разделы tags и filters admindocs
описывают все теги и фильтры, которые поставляются с Django (фактически, документация built-in tag reference и built-in filter reference берется непосредственно с этих страниц). Любые теги или фильтры, созданные вами или добавленные сторонними приложениями, также будут отображаться в этих разделах.
Ссылка на шаблон¶
Хотя admindocs
не содержит места для документирования шаблонов самих по себе, если вы используете синтаксис :template:`path/to/template.html`
в doc-строке, результирующая страница проверит путь к этому шаблону с помощью template loaders в Django. Это может быть удобным способом проверить, существует ли указанный шаблон, и показать, где в файловой системе хранится этот шаблон.
Включенные букмарклеты¶
Один букмарклет доступен на странице admindocs
:
- Документация для этой страницы
- Перемещает вас с любой страницы на документацию по представлению, которое генерирует эту страницу.
Использование этого букмарклета требует, чтобы XViewMiddleware
был установлен и чтобы вы вошли в Django admin
как User
с is_staff
, установленным на True
.