我对Django非常陌生,我正在try 建立一个新项目,使用Django-Configurations来管理开发、试运行和生产环境的配置. https://pypi.org/project/django-configurations/

我遵循了快速入门指南,但在设置之后,我在运行manage.py runserver:

File "[path_redacted]/django_test/.venv/lib/python3.11/site-packages/django/apps/registry.py", line 165, in get_app_config
    raise LookupError(message)
LookupError: No installed app with label 'admin'.

这是一个全新的空白项目,没有任何应用程序,也没有对默认项目设置进行任何更改.我只按照快速入门指南设置了Django配置.

我已经按照指南设置了manage.py个:

#!/usr/bin/env python
"""Django's command-line utility for administrative tasks."""
import os
import sys


def main():
    """Run administrative tasks."""
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'django_test.settings')
    os.environ.setdefault('DJANGO_CONFIGURATION', 'Development')
    try:
        from configurations.management import execute_from_command_line
    except ImportError as exc:
        raise ImportError(
            "Couldn't import Django. Are you sure it's installed and "
            "available on your PYTHONPATH environment variable? Did you "
            "forget to activate a virtual environment?"
        ) from exc
    execute_from_command_line(sys.argv)


if __name__ == '__main__':
    main()

然后对settings.py执行相同的操作,在默认定义BASE_DIR之后添加以下类:

class Development(Configuration):
    DEBUG = True

默认安装的应用程序在那里且未被触及,包括管理应用程序:

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

如果我注释掉urls.py中的默认管理路径,则manage.py runserver可以很好地工作,但当然,我无法访问管理页面.

urlpatterns = [
    # path('admin/', admin.site.urls),
]

我觉得我遗漏了一些非常明显的东西,但我就是想不出是什么.

推荐答案

以防有人遇到同样的问题,我想出了解决办法. 根据Django-Configurations快速入门指南,您似乎必须使用您希望在各种环境中不同的常量来定义您的配置类,如下所示:

BASE_DIR = Path(__file__).resolve().parent.parent
    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
]
class Development(Configuration):
    DEBUG = True

然而,这是行不通的.必须 for each 环境设置settings.py文件中的所有内容.例如:

class Development(Configuration):
    BASE_DIR = Path(__file__).resolve().parent.parent
    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
    ]
    DEBUG = TRUE

因此,django-configurations忽略配置类之外的设置,因此admin应用程序不在INSTALLED_APPS中,因此出现错误. 我希望这个答案能在future 帮助一些人!

Python相关问答推荐

2维数组9x9,不使用numpy.数组(MutableSequence的子类)

通过Selenium从页面获取所有H2元素

用合并列替换现有列并重命名

如何使用根据其他值相似的列从列表中获取的中间值填充空NaN数据

如何在Python中并行化以下搜索?

Julia CSV for Python中的等效性Pandas index_col参数

在np数组上实现无重叠的二维滑动窗口

所有列的滚动标准差,忽略NaN

当点击tkinter菜单而不是菜单选项时,如何执行命令?

不允许访问非IPM文件夹

找到相对于列表索引的当前最大值列表""

如何提高Pandas DataFrame中随机列 Select 和分配的效率?

在pandas中,如何在由两列加上一个值列组成的枢轴期间或之后可靠地设置多级列的索引顺序,

如何在python tkinter中绑定键盘上的另一个回车?

使用xlsxWriter在EXCEL中为数据帧的各行上色

如何在Polars中创建条件增量列?

普洛特利express 发布的人口普查数据失败

如何在Polars中处理用户自定义函数的多行结果?

基于2级列表的Pandas 切片3级多索引

为什么在安装了64位Python的64位Windows 10上以32位运行?