Администратор Django: не видно ни одного приложения - PullRequest
6 голосов
/ 18 декабря 2009

У меня есть сайт с Django, на котором запущено несколько пользовательских приложений. Я не использовал Django ORM, только представление и шаблоны, но теперь мне нужно хранить некоторую информацию, поэтому я создал несколько моделей в одном приложении и включил Admin.

Проблема в том, что, когда я вхожу в администратор, он просто говорит: «У вас нет прав на редактирование», даже приложение Auth не отображается на странице. Я использую того же пользователя, созданного с помощью syncdb, как суперпользователь.

На том же сервере у меня есть другой сайт, который отлично использует Admin.

Использование Django 1.1.0 с Apache / 2.2.10 mod_python / 3.3.1 Python / 2.5.2, с psql (PostgreSQL) 8.1.11, все в Gentoo Linux 2.6.23

Есть идеи, где я могу найти решение?

Большое спасибо.

ОБНОВЛЕНИЕ: работает с сервера разработки. Могу поспорить, что это как-то связано с разрешением файловой системы, но я просто не могу его найти.

ОБНОВЛЕНИЕ2: файл конфигурации vhost:

<Location />
  SetHandler python-program
  PythonHandler django.core.handlers.modpython
  SetEnv DJANGO_SETTINGS_MODULE gpx.settings
  PythonDebug On
  PythonPath "['/var/django'] + sys.path"
</Location>

ОБНОВЛЕНИЕ 3: больше информации

  • / var / django / gpx / init .py существует и пусто
  • Я запускаю python manage.py из каталога / var / django / gpx
  • Сайт представляет собой GPX, одно из приложений является contable и находится в / var / django / gpx / contable
  • пользователь apache - это группа webdev, и все эти каталоги и файлы принадлежат этой группе и имеют разрешение rw

ОБНОВЛЕНИЕ 4: подтвердил, что файл настроек одинаков для apache и runserver (переименовал его и оба сломали)

ОБНОВЛЕНИЕ 5: /var/django/gpx/contable/init.py существует

Это релевантная часть urls.py:

.
urlpatterns = patterns('',
                       (r'^admin/', include(admin.site.urls)),
                      )
urlpatterns += patterns('gpx',
   (r'^$',                         'menues.views.index'),
   (r'^adm/$',                     'menues.views.admIndex'),

Ответы [ 6 ]

22 голосов
/ 11 августа 2011

Надеюсь, это кому-то поможет, но у нас возникла та же проблема, потому что кто-то добавил другой бэкэнд аутентификации в settings.py и не сохранил ModelBackend по умолчанию. Изменение настройки на:

AUTHENTICATION_BACKENDS = (
    'auth.authentication.EmailBackend',
    'django.contrib.auth.backends.ModelBackend',
)

исправил это для нас.

12 голосов
/ 18 декабря 2009

Похоже, вы не зарегистрировали никаких приложений с администратором (шаг 5 в этот обзор ).

Попробуйте добавить строку admin.autodiscover() в ваш основной urls.py, сначала сделав from django.contrib import admin.

Например:

# Other imports...
from django.contrib import admin

admin.autodiscover()

urlpatterns = patterns('',
    ('^admin/', include(admin.site.urls)),
    # Other URL patterns...
)

Вы также можете зарегистрировать свои модели индивидуально с помощью admin.site.register(YourModel).

2 голосов
/ 18 декабря 2009

Попробуйте получить доступ к вашей базе данных и в таблице auth_user убедитесь, что поля is_staff, is_active и is_superuser помечены как true (1) для вашего пользователя.

2 голосов
/ 18 декабря 2009

Убедитесь, что вы добавили свое приложение в settings.INSTALLED_APPS.

Шаблон django для индексной страницы приложения администратора:

{% if app_list %}
    {% for app in app_list %}
    ...
{% else %}
    <p>{% trans "You don't have permission to edit anything." %}</p>
{% endif %}

Это должно быть вашей проблемой.


РЕДАКТИРОВАТЬ: Либо это, либо вы не вошли в систему как пользователь, которого вы говорите, вы. Можете ли вы заглянуть в базу данных и убедиться, что значение auth_user.is_superuser для данного пользователя равно 1?


РЕДАКТИРОВАТЬ: Если вы пользователь is_staff и is_superuser помечены как 1 в БД, и вы уверены, что вы вошли в систему как этот пользователь; возможно ли, что вы видите это только в производственной среде (то есть в apache) и что ваши settings.py для производственной среды отличаются от разработки?


РЕДАКТИРОВАТЬ: Таким образом, у вас разное поведение в разработке и производстве. Я могу придумать два сценария:

а) У вас есть другой файл settings.py для производства. Можете ли вы отредактировать свой вопрос, показывая соответствующую часть вашего httpd.conf? Это должно быть что-то вроде:

<Location "/mysite/">
    SetHandler python-program
    PythonHandler django.core.handlers.modpython
    SetEnv DJANGO_SETTINGS_MODULE mysite.settings
    PythonOption django.root /mysite
    PythonDebug On
</Location>

Кроме того, какой у вас PYTHONPATH?

Что говорит строка SetEnv? Это указывает на тот же модуль, который вы используете в разработке? Вы уверены, что в вашей PYTHONPATH у вас есть mysite.settings как файл, который, как вы думаете, у вас есть?

b) У вас проблема с PYTHONPATH на производстве, и приложения не могут быть найдены. Это должно привести к гораздо более серьезной ошибке, хотя ...


Вопросы:

  • / var / django / gpx имеет init .py правильно?
  • / var / django / gpx / settings.py - это тот же файл, который используется, когда вы управляете run.verser.py?
  • Как называется ваше приложение в / var / django /?
  • Имеет ли пользователь, под которым вы запускаете Apache, разрешения на все эти каталоги?
0 голосов
/ 19 сентября 2013

У меня была такая же проблема, мой файл настроек был следующим:

    PROJECT_APPS = (
        'app1',
        'app2',
    )

INSTALLED_APPS = (

    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.admin',
    'django.contrib.flatpages',

    # django-allauth settings
    'allauth',
    'allauth.account',
    'allauth.socialaccount',

    # auth providers
    'allauth.socialaccount.providers.facebook',

    'storages',
    'compressor',
    'south',

    'gunicorn',
    'kombu.transport.django',
    'djcelery',

    'django_nose',
    'raven.contrib.django.raven_compat',

    'djrill',
    'django_newsfeed'

) + PROJECT_APPS

Я забыл добавить , после django_newsfeed

0 голосов
/ 11 апреля 2010

Мы столкнулись с той же проблемой при установке django 1.1 поверх старой установки django 0.96

это было решено, когда мы сделали новую установку

...