django运行py文件报错

我的目录结构是这样的clipboard.png
我想在自创的db.py文件中引入models模块,然后使用它。我是这样使用的
clipboard.png
models.py是这样的:


from django.db import models
class User(models.Model):
    name=models.CharField(max_length=20,verbose_name='姓名')
    phone=models.CharField(max_length=11,verbose_name='电话')
    gender=models.CharField(max_length=11,choices=(('male','男'),('female','女')),default='male',verbose_name='性别',help_text="这是帮助信息")
    email=models.CharField(max_length=20,verbose_name="邮箱")
    password=models.CharField(max_length=20,verbose_name="密码")
    date=models.DateTimeField(auto_now=True,verbose_name='创建时间',help_text="创建日期")
 def userNameExit(self,name):
        temp=self.objects.get(name=name)
        if(''==temp or None==temp):
            pass

 def __str__(self):
        return self.name
class Article(models.Model):
    title=models.CharField(max_length=40,verbose_name='标题')
    autuor_id=models.ForeignKey(User,models.CASCADE)
    content=models.TextField()
    create_date=models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.title

但是问题来了报错: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.
然后在网上找了一下又加入了
clipboard.png
然后问题又来了,以下时报错信息,这个报错直接在db.py文件,import models那里,我想是不是因为我引入了django自动生成的models模块的原因,它不支持直接运行.py文件,所以才有了django的测试单元。

Traceback (most recent call last):
  File "C:/Users/malloc/Desktop/pythonprj/pycharmpj/Django/myblog/blog/db.py", line 3, in <module>
    import models
  File "C:\Users\malloc\Desktop\pythonprj\pycharmpj\Django\myblog\blog\models.py", line 4, in <module>
    class User(models.Model):
  File "C:\Appsofmy\Anaconda\lib\site-packages\django\db\models\base.py", line 87, in __new__
    app_config = apps.get_containing_app_config(module)
  File "C:\Appsofmy\Anaconda\lib\site-packages\django\apps\registry.py", line 249, in get_containing_app_config
    self.check_apps_ready()
  File "C:\Appsofmy\Anaconda\lib\site-packages\django\apps\registry.py", line 131, in check_apps_ready
    settings.INSTALLED_APPS
  File "C:\Appsofmy\Anaconda\lib\site-packages\django\conf\__init__.py", line 57, in __getattr__
    self._setup(name)
  File "C:\Appsofmy\Anaconda\lib\site-packages\django\conf\__init__.py", line 44, in _setup
    self._wrapped = Settings(settings_module)
  File "C:\Appsofmy\Anaconda\lib\site-packages\django\conf\__init__.py", line 107, in __init__
    mod = importlib.import_module(self.SETTINGS_MODULE)
  File "C:\Appsofmy\Anaconda\lib\importlib\__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
ModuleNotFoundError: No module named 'config'

求问是什么情况? 怎么解决啊?我实在晕了

阅读 5.6k
3 个回答

对于在单独的python脚本中使用django组件如templates,models之前,需要声明DJANGO_SETTINGS_MODULES环境变量并随后调用django.setup()来加载settings文件中installed_apps变量中的应用。
根据提示:首先检查项目的settings文件中INSTALLED_APPS的列表中是否设定'blog'。
然后将db.py中代码修改如下:
import os
import django
os.environ['DJANGO_SETTINGS_MODULE'] = 'myblog.settings'
django.setup()
import blog.models
print '...'

调用sys模块去指向config相对当前py文件的路径

import sys
impost os
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
os.environ['DJANGO_SETTINGS_MODULE'] = 'yourconfig.settings'
django.setup()

貌似这样可以指向config的相对路径,BTW,其他模块的导入一定要再django.setup()之后,不然不会生效哈
希望对你有帮助

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题