Нет доступа к розетте

Версии:

  • Python 3.5.1
  • Джанго 1.10
  • Джанго Розетта 0.7.13

Руководство по установке говорит вам добавить следующее к вашему проекту settings.py:

from django.conf import settings

if 'rosetta' in settings.INSTALLED_APPS:
    urlpatterns += patterns('',
        url(r'^rosetta/', include('rosetta.urls')),
    )

Тем не менее, это просто приводит к ошибке:

NameError: name 'patterns' is not defined

1 ответ

Решение

Поиск этой проблемы показывает, что, очевидно, нужно ее импортировать:

from django.conf.urls import patterns

Но все равно это не работает.

ImportError: cannot import name 'patterns'

Эта функция была удалена в Django 1.10. Тем не менее, можно добавить URL розетки условно, используя этот подход:

from django.conf import settings

if 'rosetta' in settings.INSTALLED_APPS:
    urlpatterns.append(url(r'^rosetta/', include('rosetta.urls')))

Однако, если вы попытаетесь получить доступ к rosetta по адресу http://127.0.0.1:8000/rosetta/ вы можете быть удивлены, обнаружив, что вы все еще получаете 404 Page not found,

Таким образом, кажется, что включенные шаблоны не работают должным образом. Но они. Проблема в том, что существует скрытое требование, что необходимо войти в систему при доступе к странице розетки (возможно, с сотрудником / суперпользователем?). Итак, просто зайдите на http://127.0.0.1:8000/admin/, войдите в систему, а затем снова перейдите к URL-адресу розетки. Теперь это должно работать.

Установка замечает это, вроде:

Поскольку Rosetta требует доступа на запись к некоторым файлам в вашем проекте Django, доступ к приложению ограничен только администратором (как определено в интерфейсе администратора вашего проекта)

Как он узнал, что вы администратор, если вы не вошли в систему? Это не так, и, по-видимому, вместо того, чтобы давать информативную ошибку, он полностью игнорирует URL-адреса розетт.

Другие вопросы по тегам