我正在学习python crash course, 2nd edition 第18章。做到激活模型需要makemigrations.
from django.db import models
# Create your models here.
class Topic(models.Model):
"""A topic the user is learning about."""
text = models.CharField(max_length=200)
date_added = models.DateTimeField(auto_now_add=True)
def __str__(self):
"""Return a string representation of the model."""
return self.text`
然后报错:
Traceback (most recent call last):
File "C:\Users\Dell-PC\learning_logs\models.py", line 6, in
class Topic(models.Model):
File "C:\Users\Dell-PC\AppData\Local\Programs\Python\Python39\lib\site-packages\django\db\models\base.py", line 108, in new
app_config = apps.get_containing_app_config(module)
File "C:\Users\Dell-PC\AppData\Local\Programs\Python\Python39\lib\site-packages\django\apps\registry.py", line 253, in get_containing_app_config
self.check_apps_ready()
File "C:\Users\Dell-PC\AppData\Local\Programs\Python\Python39\lib\site-packages\django\apps\registry.py", line 135, in check_apps_ready
settings.INSTALLED_APPS
File "C:\Users\Dell-PC\AppData\Local\Programs\Python\Python39\lib\site-packages\django\conf_init_.py", line 82, in getattr
self.setup(name)
File "C:\Users\Dell-PC\AppData\Local\Programs\Python\Python39\lib\site-packages\django\conf_init.py", line 63, in _setup
raise ImproperlyConfigured(
django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
[Finished in 383ms]
我用的是sublime text.
怎么解决?
https://docs.djangoproject.com/en/1.11/topics/settings/#designating-the-settings
文章大意是在使用 Django 时,必须告诉它你正在使用哪些设置。这些可以通过环境变量 DJANGO_SETTINGS_MODULE设置,程序在执行的时候会自动使用或者你也可以在访问设置之前调用 settings.configure()。
由于你没有设置环境变量,导致你的程序在执行时未找到相应的配置,因此报错了,提醒你应该进行配置。
DJANGO_SETTINGS_MODULE 的值应该是 Python 路径语法,例如Mysite.settings。请注意,设置模块应位于 Python 导入搜索路径上。
希望对你有所帮助。
settings.py 这个文件里面有个INSTALLED_APPS 你需要把你应用程序名字加进去
settings.py 中加上自己的app文件夹名字
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'xadmin',
'crispy_forms',
'taggit',
'users',#这里
'qa',
]
django使用INSTALLED_APPS搜索部署使用的文件(防止误杀非后端代码),你这个应该是settings.py的INSTALLED_APPS没有设置正确,需要把模型的库导入加进去。
注意:子包不会被主动导入!
manage.py文件中设定了settings文件
#!/usr/bin/env python
import os
import sys
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")
from django.core.management import execute_from_command_line
execute_from_command_line(sys.argv)
你可能没有settings.py这个文件,把你的目录结构列出来看看。