Можете ли вы помочь найти ошибку?

Терминал говорит, что я не определил 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.

Вернуться на верх