【问题标题】:Django App Not Showing up in Admin InterfaceDjango 应用程序未显示在管理界面中
【发布时间】:2010-12-14 05:38:49
【问题描述】:

我目前正在从我的开发服务器迁移到 Apache Web 生产服务器。

我已经尝试通过复制它来执行以下操作,我可以登录到管理面板但它没有显示出来。

我的应用中的 admin.py 如下所示:

    import models
    from django.contrib import admin

    admin.site.register(models.Organization)

这是我的models.py

from django.db import models

class Organization(models.Model):
    name = models.CharField(max_length=100)
    website = models.URLField()
    azon_code = models.CharField(max_length=50)
    gooe_code = models.CharField(max_length=50)
    cj_code = models.CharField(max_length=50)

我已经重新同步了数据库并重新启动了 apache,并认为这可能会有所作为。

【问题讨论】:

  • 你没有忘记将它添加到你的 settings.py 中,是吗?
  • 是的,我做到了。非常感谢!
  • 哈哈,我应该将其添加为答案而不是评论! :)
  • 毕竟别忘了运行syncdb。
  • 检查文件名是否完全是“admin.py”,我有一个前导空格“admin.py”

标签: django django-admin


【解决方案1】:

你不应该像这样导入吗:

from mysite.myapp.models import Organization
admin.site.register(Organization)

【讨论】:

  • 我试过了,但它仍然不适合我。让我再试一次!
  • 我刚刚切换到你的模型,仍然不行。无论如何,我认为您的模型是一个更好的方法。它看起来更干净,这就是我在其他网站上看到的方式。不过感谢您的尝试!
  • 正如@lemonad 建议的那样,您确实将其添加到您的settings.py 中吗?
【解决方案2】:

对我来说,这是非常愚蠢的理由。 我已启用权限。管理员用户没有访问模型的权限。

我将权限授予管理员用户。它奏效了。

【讨论】:

  • 如果您遇到此问题的变体,我建议您关注您的权限!几乎每个线程都提到了权限,但我相当确定我的用户拥有超级用户权限,我错了! (经过长时间的故障排除,我看到 site-packages/django/contrib/admin/sites.py 说我没有权限查看我注册的应用程序的模型。在仔细检查权限后,我也没有让我的管理员用户是超级用户,我也没有授予所需的权限。)
【解决方案3】:

对于那些访问这个问题的人来说,上面的答案在当前的Django版本(1.7.7)中并不直接起作用。

上述问题的答案变成:

from myapp.models import Organization
admin.site.register(Organization)

【讨论】:

    【解决方案4】:

    在管理页面中未显示应用程序的另一个可能原因是 Apache 没有权限。有时我们创建的应用程序具有 Apache 无法访问的权限。如果 Apache 没有访问权限,它将不会显示。对于 linux 用户,需要更改应用权限。

    sudo chown -R www-data:www-data app_name
    

    此命令将允许 Apache 递归访问应用程序文件夹。

    【讨论】:

      【解决方案5】:

      在您项目的 main( first and default ) 应用中的 admin.py 文件中 这样做

      在我的情况下,我有 3 个应用程序如下

      cityapp,stateapp,countryapp

      所以在我的 admin.py 文件中,我将添加以下行

      from django.contrib import admin
      from stateapp.models import State
      from countryapp.models import Country
      from cityapp.models import City
      
      admin.site.register(Country)
      admin.site.register(State)
      admin.site.register(City)
      

      它适用于我的情况,请参阅

      【讨论】: