我的目录结构是这样的
我想在自创的db.py文件中引入models模块,然后使用它。我是这样使用的
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.
然后在网上找了一下又加入了
然后问题又来了,以下时报错信息,这个报错直接在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'
求问是什么情况? 怎么解决啊?我实在晕了
对于在单独的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 '...'