这个问题怎么解决,为什么会报错?

我正在学习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文件夹名字

img

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这个文件,把你的目录结构列出来看看。