Nano Hash - криптовалюты, майнинг, программирование

Django admindoc не отображает reStructuredText

Я использую django admindocs для документации, и основные функции работают хорошо (я могу получить доступ к страницам документации, модели перечислены и задокументированы, включен help_text и т. д.).

К сожалению, разметка reStructuredText в строках документации полностью игнорируется, например.

  • Гиперссылки не преобразуются в гиперссылки
  • Маркированные списки — это не маркированные списки
  • Разметки Django, такие как :model:appname.ModelName, не разрешаются

Я использую версию Django для разработки Trunk (1.7)

Вот пример строки документации, которую я использую:

class Adresse(models.Model):

    u"""Postanschrift

    Wird für 
     - Organisationen 
     - Personen 

    genutzt.

    Siehe auch https://docs.djangoproject.com/en/dev/ref/contrib/contenttypes/#generic-relations 

    """

    object_id    = models.PositiveIntegerField()
    content_type = models.ForeignKey(ContentType)
    of           = generic.GenericForeignKey('content_type', 'object_id' )
    ...

Когда я вставляю вышеуказанное содержимое строки документации в оставшийся редактор (я использовал http://rst.ninjs.org/ ), все работает как положено.

Преобразование работает для методов документирования строк документации, например.

def my_method(self):
    """Docstring Heading

    1. Listitem 1
    2. Listitem 2

    refers to :model:`personen.Person`
    """
    pass

правильно конвертируется.

Я уверен, я пропустил что-то очень очевидное, не так ли?


Ответы:


1

Тогда поведение модуля admindocs будет таким же, как в Django 1.4.

  • Чтобы автоматически создавать документы для навигации из файлов Python, Python Sphinx https://www.sphinx-doc.org может быть лучшим способом, поместив сгенерированные файлы в другую псевдостатическую папку.
    Для этого скопируйте документы sphinx в папку шаблона и добавьте пользовательские urls(..) и view, которые обеспечивают доступ к файлам с ограничениями, установленными на < em>только персонал (например, через канонические декораторы login_required и user_pases_test.

Другие решения:

К сожалению, документация по первому использованию отсутствует, например, параметр settings.py RESTRUCTUREDTEXT_FILTER_SETTINGS.

Убедите себя, что для активации этих фильтров к вашим настройкам INSTALLED_APPS в settings.py и {% load markup %} в шаблоне добавляется django.contrib.markup'.

У вас должен быть установлен docutils. Вы не получите ошибок, если он не установлен. При использовании Linux с bash введите:

if [[ -z `pip freeze | grep docutils` ]];  then sudo easy_install docutils;fi;

Прямой рендеринг reStructuredText:

from django import template

class Adresse(models.Model):
    doc = u"""Postanschrift

    Wird für 
     - Organisationen 
     - Personen 
    """
t = template.Template('{% load markup %}{{ contentstr|restructuredtext }}')
c = template.Context({'contentstr': doc})
__doc__ = t.render(c)

Вы можете сделать это автоматически, перебрав все [соответствующие] модели и их атрибут __docs__, чтобы впоследствии отобразить строку как reStructuredText следующим образом:

from django.conf import settings
from django.db.models import get_app, get_models
from django import template

for appname in settings.INSTALLED_APPS:
  app = get_app(appname )
  for model in get_models(app):
    if hasattr(model, '__doc__') and model.__doc__ != "":
      t = template.Template('{% load markup %}{{ contentstr|restructuredtext }}')
      c = template.Context({'contentstr': model.__doc__})
      model.__doc__ = t.render(c)
22.10.2013
  • Спасибо за этот развернутый ответ! Я рассмотрю упомянутые варианты и дам отзыв о том, что сработало для меня! 23.10.2013
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..