Django admin/doc/views/ все пустые или неработающие

Я пытаюсь использовать встроенную функцию административной документации Django, чтобы упростить написание шаблонов. Предположительно, если вы перейдете в /admin/docs/views, вы должны получить документацию для каждого представления в вашем приложении. Я вижу список, но ни одна из ссылок не работает:

-) Любое представленное в списке представление, связанное с моим приложением, просто переходит на пустую страницу, в которой нет ничего, кроме имени представления в качестве заголовка.

-) Представления, связанные с администратором, выдают мне ошибки Django 404, когда я нажимаю на них, кроме тех, которые связаны с самой документацией. Ссылки, связанные с документами, также дают мне пустые страницы. (т. е. щелчок /admin/doc/filters дает пустую страницу с заголовком «django.contrib.admindocs.views.template_filter_index», но щелчок /admin/auth/user дает мне ошибку Django 404

Ошибки 404 заставляют меня подозревать, что моя конфигурация URL неверна, но все, что я сделал, это раскомментировал встроенные строки. Соответствующие разделы гласят:

# Uncomment the admin/doc line below to enable admin documentation:
(r'^admin/doc/', include('django.contrib.admindocs.urls')),

# Uncomment the next line to enable the admin:
(r'^admin/', include(admin.site.urls)), 

И я понятия не имею, что делать с пустыми страницами. Нужно ли мне где-то предоставлять дополнительную метаинформацию, например, я знаю, что вам нужно предоставить get_absolute_url для моделей, чтобы некоторые функции администратора работали правильно?

Даже если никто не знает ответа, любая документация по функции admin docs была бы полезна — я весь Google (и искал StackOverflow), и эта функция кажется очень мало документированной.

Спасибо!


person wiltzius    schedule 21.10.2010    source источник
comment
Я столкнулся с той же проблемой, но обнаружил, что сломаны только мои представления, завернутые в декораторы. Подробнее см. эту заявку. Он утверждает, что проблема исправлена, но я все еще вижу ее в проекте Django 1.3. Если вы посмотрите на некоторые тикеты, перечисленные в этом тикете, то увидите, что есть некоторые обходные пути.   -  person Tom    schedule 30.01.2013
comment
Этот подход исправил это для меня.   -  person Tom    schedule 30.01.2013
comment
@Tom Теперь я снова столкнулся с этой проблемой, Django Rest Framework использует декоратор @APIView, и каждое представление, которое его использует, не работает в документах администратора.   -  person sox with Monica    schedule 22.05.2019


Ответы (2)


Вам нужно добавить 'django.contrib.admindocs' к INSTALLED_APPS в settings.py. Он уже должен быть там и закомментирован. Хотя было бы неплохо, если бы это упоминалось в комментарии в urls.py... Источник< /а>.

person Hamish Downer    schedule 27.07.2011

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

Если вы дадите своим представлениям функции docstrings (документация), этот контент появится на ваших «пустых страницах».

Большинство — нет, все — представлений сайтов администрирования на самом деле являются декоративными методами-членами admin.sites.AdminSite. Я огляделся, и мой вид, использующий декоратор, тоже страдает от 404.

Запускается представление, отвечающее за детали представления:

def view_detail(request, view):
    if not utils.docutils_is_available:
        return missing_docutils_page(request)

    mod, func = urlresolvers.get_mod_func(view)
    try:
        view_func = getattr(import_module(mod), func)
    except (ImportError, AttributeError):
        raise Http404
    title, body, metadata = utils.parse_docstring(view_func.__doc__)
    ...

Вы можете видеть, что он пытается импортировать представление, чтобы получить от него информацию; если представление на самом деле является декоратором (который, вероятно, использовал внутреннюю функцию для переноса реального представления), он не сможет его импортировать. например, если вы сделаете from django.contrib.admin.sites import index в оболочке django, вы получите ImportError, тогда как django.contrib.admin.site.index (обратите внимание на единственное число site) это:

<bound method AdminSite.index of <django.contrib.admin.sites.AdminSite object at 0x...>>

Кроме того, эта последняя строка в моем фрагменте, похоже, указывает на возможность более тонкого контроля над тем, что отображается на этих страницах, если вы хотите выяснить, какой шаблон использует util.parse_docstring.

person eternicode    schedule 11.11.2010