关于django报错ImproperlyConfigured,按照网上教程操作后又出现AppRegistryNotReady的解决

关于django报错ImproperlyConfigured,按照网上教程操作后又出现AppRegistryNotReady的解决

最近本小白在用django创建项目并且链接数据库后,想通过manage.py往数据库里写入数据,结果碰上了标题上两个报错,后经指导后解决问题,特在此写篇博客帮助遇到同样问题的你
(如果博客哪里有问题,还请各位大佬提出)

  • 首先我的manage.py和user中models.py是这样的
  1. 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', 'homework1.settings')
    try:
        from django.core.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)

from user.models import *
if __name__ == '__main__':
    main()
    create_users()
  1. models.py
from django.db import models

# Create your models here.
class User(models.Model):
    username = models.CharField(max_length=10)
    password = models.CharField(max_length=16)

def create_users(num=5):
    names = ['lhys', 'lhyn', 'lhy', 'lhywd666', 'hhh', 'lhy123']
    for i in range(num):
        user = User()
        user.username = names[i]
        user.password = names[5 - i]
        user.save()
  • 上边的代码是在 models.py 中创建一个类 User 用来生成数据表中键类型及约束,
    并且定义了一个向数据表中插入数据的函数
  • 在 manage.py 中调用函数,插入数据
  • 结果报错如下:
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.
  • 从百度上寻找答案后,解决方案如下:
    https://blog.csdn.net/ZT7524/article/details/89916879
  • 但按照这位大佬的方法尝试后,结果报这样的错误:
django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.
  • 继续百度后,发现结果都不太理想
  • 于是去请教别人,终于发现了自己的错误
  • 原来,manage.py 中的导包必须在 main 之后
  • (啊,我是真的蠢笨[/捂脸][/哭])
  • 示例如下:
  • (其他部分不变)
  1. 原来的
from user.models import *
if __name__ == '__main__':
    main()
    create_users()
  1. 正确的
if __name__ == '__main__':
    main()
    from user.models import *
    create_users()
  • 原因是:

  • 写在上面可能会被视为框架里面的,运行时会报错

  • 最后的运行结果
    关于django报错ImproperlyConfigured,按照网上教程操作后又出现AppRegistryNotReady的解决_第1张图片关于django报错ImproperlyConfigured,按照网上教程操作后又出现AppRegistryNotReady的解决_第2张图片

  • 成功将数据插入数据表中

你可能感兴趣的:(python,学习笔记,django,数据库)