今天在写新的Django项目的时候,在项目根目录下面执行命令python manage.py makemigrations common时,发现没有成功创建common目录,而是报错了,报错内容为No installed app with label 'common'.
刚开始,我以为这是由于我在同一个文件夹下创建了两个Django项目,导致了第一个的Django项目影响了第二个的Django项目导致的,但是从理论上来讲,应该不会有这种影响,况且我的数据库都是分开的,并没有将两个项目的数据库表写在同一个数据库中。
通过查找资料才发现,是由于找不到app的文件目录,在setting目录下添加了如下的代码。
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
按道理说,这样就可以了,但是,经过实践之后,还是报下面的错误
F:\code\Project\wsm>python manage.py makemigrations common
No installed app with label 'common'.
又查了很多资料,发现,有的资料中是这样写的,在setting目录中
INSTALLED_APPS = [
# 加入下面这行
'common',
]
通过尝试,发现成功了。
而我自己写的加入的app的路径是这样的。
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
#下面这行就是我自己添加的
'common.apps.CommonConfig',
]
这是为什么呢?
因为版本的问题,下面是我的版本。本质上,两种方式都正确,只是版本不同,修改时,应根据自己的版本具体选择。
C:\Users\Administrator>python --version
Python 3.8.5
C:\Users\Administrator>python -m django --version
4.2.9