Django 教程第 2 部分 - 注册后应用程序未显示在管理员上

Posted

技术标签:

【中文标题】Django 教程第 2 部分 - 注册后应用程序未显示在管理员上【英文标题】:Django tutorial part 2 - app does not show up on admin after registering 【发布时间】:2017-07-13 01:04:46 【问题描述】:

按照 Django 教程 (part 2),注册后我的 django 管理面板中似乎看不到我的 Polls 应用程序。我的屏幕看起来有点像这样,明显缺少Polls 应用程序的部分:

到目前为止我做了什么(following parts of this answer 和教程本身):

    admin.py 文件中注册了我的应用程序。 将其添加到我的项目文件夹中的settings.py 中的INSTALLED_APPS。 运行 python manage.py makemigrationspython manage.py migrate 没有任何变化(顺便说一句,对于未来的读者 - 这是 syncdb 的新 >1.8 化身,我相信)。 确保与我登录的用户具有超级用户权限(根据this answer)。 重启了我的 nginx

我仍然不清楚问题是什么,或者如何调试它。

我的admin.py 文件:

from django.contrib import admin

from .models import Question

admin.site.register(Question)

我的models.py 文件(注意Question 对象):

import datetime

from django.utils import timezone
from django.db import models

class Question(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')

    def __str__(self):
        return self.question_text

    def was_published_recently(self):
        return self.pub_date >= timezone.now() - datetime.timedelta(days=1)


class Choice(models.Model):
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)

    def __str__(self):
        return self.choice_text

INSTALLED_APPS 我的settings.py 项目文件的一部分:

INSTALLED_APPS = [
    'polls.apps.PollsConfig',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

【问题讨论】:

你能发布你的admin.py文件是什么样子吗? 立即添加。 @themanatuf 您在目录中看到admin.pyc 文件吗?我猜admin.py 没有被执行。还要确保django.contrib.admin 也在你的INSTALLED_APPS 中。 您是否已将您的应用添加到 settings.py 中的 installed_apps 列表中? 我确实有。还张贴在这里@ManikantaPrasanth。 @themanatuf 文件夹中没有 .pyc 文件,但 __pycahce__ 文件夹有一个:admin.cpython-35.pyc。那可能会导致问题吗? 【参考方案1】:

事实证明,我没有注意应用程序的服务过程

所以,riding on this answer,我发现它是这样分解的:

    nginx 获取一个 URL,决定从哪里拉取 - 在我们的例子中是 Gunicorn。 Gunicorn 搜索要提取的正确 Python 文件 - 在我们的例子中是 Django。 Djnago 被执行并加载应用(包括我们的管理面板)。

在这种情况下,在对管理面板进行更改后,我重新启动了 nginx,但没有重新启动 Gunicorn。重新启动 Gunicorn 解决了问题,如果您查看了我的最后一条评论 - nginx 因我的 admin.py 文件中的拼写错误而崩溃(在我尝试修复它的过程中,在写完这个问题后很好地添加了,因此没有出现在 OP 中)。

【讨论】:

以上是关于Django 教程第 2 部分 - 注册后应用程序未显示在管理员上的主要内容,如果未能解决你的问题,请参考以下文章

Django 教程第 2 部分模板——base_site.html 更改未反映

编写你的第一个 Django 应用程序,第8部分

编写你的第一个 Django 应用程序,第4部分

教程第 3 部分的 Django NoReverseMatch 错误

Django注册:由于缺少参数,注册失败后重定向

编写你的第一个 Django 应用半成品