Можете ли вы помочь найти ошибку?
Терминал говорит, что я не определил DJANGO_SETTINGS_MODULE, но я попробовал, как мне кажется, все методы, чтобы сделать это, и пока ничего не помогло (кодирование на windows). Может ли кто-нибудь помочь мне, пожалуйста? Я застрял и не знаю, что делать. Может это поможет - я запускаю свой виртуальный env через Anaconda -
conda activate djangoenv
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.
from app.models import AccessRecrod, Webpage, Topic
import random
import django
import os
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'project.settings')
django.setup()
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):
# 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, url=fake_url, name=fake_name)[0]
# create fake access record
acc_rec = AccessRecrod.objects.get_or_create(
name=webpg, date=fake_date)[0]
if __name__ == '__main__':
print('populating script!')
populate(20)
print('populating complete!')
Вместо того, чтобы пытаться впихнуть обычный python-скрипт в среду Django, как это было сделано, я предлагаю вам создать команду, которую вы сможете запускать с помощью ./manage.py. Вы можете узнать, как создавать свои собственные пользовательские команды здесь. Когда вы сделаете это правильно, вы сможете запустить команду ./manage.py create_topics или любое другое имя, которое вы дадите своей команде. Это позволит manage.py загрузить окружение Django для вас.
В качестве альтернативы можно рассмотреть создание fixtures с помощью ./manage.py dumpdata и ./manage.py loaddata. Эти команды позволят вам создать данные и сохранить их в .json файл, который вы сможете загрузить в вашу базу данных в любое время.
Проблема заключается в импорте моделей. Вам просто нужно настроить django, прежде чем импортировать что-либо связанное с django:
import django
import os
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'project.settings')
django.setup()
from faker import Faker
from app.models import AccessRecrod, Webpage, Topic
import random
rest of your code
Если вы посмотрите код в manage.py и код django на github, вы найдете по сути ту же последовательность кода (кроме множества дополнительных вещей), когда вы запускаете команду управления с помощью "python manage.py your_command"
Использовать команду управления напрямую, как описано в ответе от @Code-Apprentice, было бы другим "нормальным" или "более django способом" для интеграции вашего скрипта.
Но вы спросили о причине сообщения об ошибке в вашем способе выполнения.
Если вы изучите полный след ошибки, вы также обнаружите, что он начинается с команды import.