У меня есть сайт с Django, запускающим некоторые пользовательские приложения. Я не использовал Django ORM, просто представление и шаблоны, но теперь я должен сохранить некоторую информацию, таким образом, я создал некоторые модели в одном приложении и включил Администратору.
Проблема состоит в том, когда я вхожу в систему Администратор, она просто говорит, что "У Вас нет разрешения отредактировать что-либо", даже Подлинное приложение не показывает на странице. Я использую того же пользователя, созданного с syncdb как суперпользователь.
В том же сервере у меня есть другой сайт, который использует Администратора очень хорошо.
Используя Django 1.1.0 с Apache/2.2.10 mod_python/3.3.1 Python/2.5.2, с psql (PostgreSQL) 8.1.11 все в хинду Linux 2.6.23
Какие-либо идеи, где я могу найти решение?
Большое спасибо.
ОБНОВЛЕНИЕ: Это работает от сервера разработки. Я держал пари, что это имеет некоторое отношение к некоторому разрешению файловой системы, но я просто не могу найти его.
UPDATE2: конфигурационный файл 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:подробнее
ОБНОВЛЕНИЕ 4: подтвержденный, что файл настроек является тем же для апача и runserver (переименовал его и оба повредились),
ОБНОВЛЕНИЕ 5:/var/django/gpx/contable/init.py существует
Это - relevan часть urls.py:
urlpatterns = patterns('',
(r'^admin/', include(admin.site.urls)),
)
urlpatterns += patterns('gpx',
(r'^$', 'menues.views.index'),
(r'^adm/$', 'menues.views.admIndex'),
Попробуйте получить доступ к своей базе данных и в таблице auth_user убедитесь, что поля is_staff, is_active и is_superuser помечены как true (1) для ваш пользователь.
Убедитесь, что вы добавили свое приложение в 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 для продакшена отличается от того, что вы видите в разработке?
РЕДАКТИРОВАТЬ: Итак, у вас разное поведение в разработке и в продакшене. Я могу представить себе два сценария:
a) У вас есть другой файл 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
в качестве файла, который, по вашему мнению, у вас есть?
б) У вас есть проблема с PYTHONPATH в рабочей среде, и приложения не могут быть найдены. Однако это должно вызвать гораздо более серьезную ошибку ...
Вопросы:
Похоже, вы не зарегистрировали никаких приложений у администратора (шаг 5 в этого обзора ).
Попробуйте добавить строку admin.autodiscover ()
в ваш основной urls.py, предварительно сделав из 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)
.
Мы столкнулись с той же проблемой при установке django 1.1 поверх старой установки django 0.96
, она была решена, когда мы сделали новую установку
{ {1}}