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

Fac*_*sco 6 python django permissions django-admin

我有一个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中

我可以找到解决方案的任何想法?

非常感谢.

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

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>
Run Code Online (Sandbox Code Playgroud)

更新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'),
Run Code Online (Sandbox Code Playgroud)

Mat*_*ert 22

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

AUTHENTICATION_BACKENDS = (
    'auth.authentication.EmailBackend',
    'django.contrib.auth.backends.ModelBackend',
)
Run Code Online (Sandbox Code Playgroud)

为我们修好了.


Joh*_*ebs 12

听起来您没有在管理员处注册任何应用程序(本概述中的步骤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...
)
Run Code Online (Sandbox Code Playgroud)

您也可以单独注册您的模型admin.site.register(YourModel).


cet*_*eek 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 %}
Run Code Online (Sandbox Code Playgroud)

那一定是你的问题。


编辑:要么您没有以您所说的用户身份登录。您能否查看数据库并确保相关用户的 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>
Run Code Online (Sandbox Code Playgroud)

另外,你的 PYTHONPATH 是什么?

SetEnv 行说什么?它是否指向您正在开发的相同模块?您确定您的 PYTHONPATH 中有mysite.settings您认为拥有的文件吗?

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


问题:

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