django.core.exceptions.ImproperlyConfigured: 请求设置 INSTALLED_APPS,但未配置设置
django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are not configured
我正在尝试使用 Faker 在我的模式中填充数据
但我得到了错误。
这是我的代码
import os
from faker import Faker
from first_app.models import Topic, Webpage, AccessRecord
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myfirst.settings')
import django
django.setup()
import random
fakegen = Faker()
topics = ['search', 'Social', 'Marketplace', 'News', 'Games']
def add_topic():
t = Topic.objects.get_or_create(top_name=random.choice(topics))[0]
t.save()
return t
def populate(N=5):
for entry in range(N):
top=add_topic()
fake_url=fakegen.url()
fake_date=fakegen.date()
fake_name=fakegen.company()
webpg=Webpage.objects.get_or_create(topic=top,url=fake_url,name=fake_name)[0]
acc_rec=AccessRecord.objects.get_or_create(name=webpg,date=fake_date)[0]
if __name__=='__main__':
print('populating script')
populate(30)
print('Completed')
我认为错误是由于这一行造成的
os.environ.setdefault
但是当我评论这一行时它不会填充数据
错误如下
django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJA
NGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
您应该在 导入模型之前调用 django.setup()
:
import os
import random
from faker import Faker
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myfirst.settings')
import django
django.setup()
from first_app.models import Topic, Webpage, AccessRecord
#...
我最近遇到了一个非常相似的错误
ERROR project/tests/test_models.py - django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are no...
ERROR project/tests/test_priced_offers.py - django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings...
出现这种情况,是因为我运行pytest在根文件夹下,不在项目文件夹下。当我在项目文件夹中执行测试时,错误消失了。
希望对大家有所帮助!
我刚刚调试了我的 populate.py 文件,发现我在配置 Django 之前导入了 models.py 所以首先你需要设置环境然后你需要设置 Django 最后你可以导入模型在 populate.py 文件中。
from faker import Faker
import random
import django
import os
# Configure settings for project
# Need to run this before calling models from application!
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'first_model.settings') # this should be done first.
# Import settings
django.setup() # This needs to be done after you set the environ
from first_app.models import Topic, WebPage, AccessRecord # At last you can import models in populate.py file
fakegen = Faker()
topics = ['Search', 'Social', 'Marketplace', 'News', 'Games']
def add_topic():
t = Topic.objects.get_or_create(top_name=random.choice(topics))[0]
t.save()
return t
def populate(N=5):
'''
Create N Entries of Dates Accessed
'''
for entry in range(N):
# Get Topic for Entry
top = add_topic()
# Create Fake Data for entry
fake_url = fakegen.url()
fake_date = fakegen.date()
fake_name = fakegen.company()
# Create new Webpage Entry
webpg = WebPage.objects.get_or_create(
topic=top, name=fake_name, url=fake_url,)[0]
# Create Fake Access Record for that page
# Could add more of these if you wanted...
accRec = AccessRecord.objects.get_or_create(
name=webpg, date=fake_date)[0]
if __name__ == '__main__':
print("Populating the databases...Please Wait")
populate(20)
print('Populating Complete')
我正在尝试使用 Faker 在我的模式中填充数据 但我得到了错误。 这是我的代码
import os
from faker import Faker
from first_app.models import Topic, Webpage, AccessRecord
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myfirst.settings')
import django
django.setup()
import random
fakegen = Faker()
topics = ['search', 'Social', 'Marketplace', 'News', 'Games']
def add_topic():
t = Topic.objects.get_or_create(top_name=random.choice(topics))[0]
t.save()
return t
def populate(N=5):
for entry in range(N):
top=add_topic()
fake_url=fakegen.url()
fake_date=fakegen.date()
fake_name=fakegen.company()
webpg=Webpage.objects.get_or_create(topic=top,url=fake_url,name=fake_name)[0]
acc_rec=AccessRecord.objects.get_or_create(name=webpg,date=fake_date)[0]
if __name__=='__main__':
print('populating script')
populate(30)
print('Completed')
我认为错误是由于这一行造成的
os.environ.setdefault
但是当我评论这一行时它不会填充数据
错误如下
django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJA NGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
您应该在 导入模型之前调用 django.setup()
:
import os
import random
from faker import Faker
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myfirst.settings')
import django
django.setup()
from first_app.models import Topic, Webpage, AccessRecord
#...
我最近遇到了一个非常相似的错误
ERROR project/tests/test_models.py - django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are no...
ERROR project/tests/test_priced_offers.py - django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings...
出现这种情况,是因为我运行pytest在根文件夹下,不在项目文件夹下。当我在项目文件夹中执行测试时,错误消失了。
希望对大家有所帮助!
我刚刚调试了我的 populate.py 文件,发现我在配置 Django 之前导入了 models.py 所以首先你需要设置环境然后你需要设置 Django 最后你可以导入模型在 populate.py 文件中。
from faker import Faker
import random
import django
import os
# Configure settings for project
# Need to run this before calling models from application!
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'first_model.settings') # this should be done first.
# Import settings
django.setup() # This needs to be done after you set the environ
from first_app.models import Topic, WebPage, AccessRecord # At last you can import models in populate.py file
fakegen = Faker()
topics = ['Search', 'Social', 'Marketplace', 'News', 'Games']
def add_topic():
t = Topic.objects.get_or_create(top_name=random.choice(topics))[0]
t.save()
return t
def populate(N=5):
'''
Create N Entries of Dates Accessed
'''
for entry in range(N):
# Get Topic for Entry
top = add_topic()
# Create Fake Data for entry
fake_url = fakegen.url()
fake_date = fakegen.date()
fake_name = fakegen.company()
# Create new Webpage Entry
webpg = WebPage.objects.get_or_create(
topic=top, name=fake_name, url=fake_url,)[0]
# Create Fake Access Record for that page
# Could add more of these if you wanted...
accRec = AccessRecord.objects.get_or_create(
name=webpg, date=fake_date)[0]
if __name__ == '__main__':
print("Populating the databases...Please Wait")
populate(20)
print('Populating Complete')