Django Admin:没有看到任何应用程序(权限问题?)

时间:2009-12-18 17:45:02

标签: python django permissions django-admin

我有一个Django网站运行一些自定义应用程序。我没有使用Django ORM,只是视图和模板,但现在我需要存储一些信息,所以我在一个应用程序中创建了一些模型并启用了管理员。

问题是,当我登录管理员时,它只是说“您没有权限编辑任何内容”,甚至连页面中的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

我能找到解决方案的任何想法吗?

非常感谢。

更新:它适用于开发服务器。我敢打赌这与某些文件系统权限有关,但我找不到它。

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:更多信息

  • / var / django / gpx / init .py存在且为空
  • 我从/ var / django / gpx目录
  • 运行python manage.py
  • 该网站是GPX,其中一个应用程序容易存在并且位于/ 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 个答案:

答案 0 :(得分:22)

希望这有助于某人,但我们遇到了同样的问题,因为有人在settings.py中添加了不同的身份验证后端,并且没有保留默认的ModelBackend。将设置更改为:

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

为我们修好了。

答案 1 :(得分:12)

听起来您没有在管理员处注册任何应用程序(this overview中的第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 :(得分:2)

确保已将应用程序添加到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作为你认为的文件吗?

b)您在制作中遇到PYTHONPATH问题,但无法找到相应的应用。这应该会产生更严重的错误......


问题:

  • / var / django / gpx有 init .py正确吗?
  • /var/django/gpx/settings.py与您执行manage.py runserver时使用的文件相同?
  • / var / django /的应用名称是什么?
  • 您运行Apache的用户是否拥有所有这些目录的权限?

答案 3 :(得分:2)

尝试访问您的数据库并在表auth_user中确保为您的用户将字段is_staff,is_active和is_superuser标记为true(1)。

答案 4 :(得分:0)

在django 0.96的旧安装上安装django 1.1时遇到了同样的问题

当我们进行全新安装时它已经解决了

答案 5 :(得分:0)

我遇到了同样的问题,我的设置文件如下:

    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