본문 바로가기

[내일배움캠프]스파르타코딩클럽 AI 웹개발/Today I Learned

[TIL] 트러블 슈팅 - django 프로젝트 외부 파일 실행

하루에 한 번씩 네이버 뉴스 IT/과학 탭의 헤드라인 뉴스 5개를 크롤링하여 제공하려고 했다

이 파일은 장고 서버와 별도로 실행되지만 데이터베이스에 저장되어야 했다

처음엔 같은 프로젝트 폴더에 있어서 모델을 불러와서 사용하려고 시도했다

...
from posts.models import Headline
...

def headline_summary():
    ...
        Headline.objects.create(
            url=url,
            title=title,
            summery=summary,
        )

위과 같이 사용하고 파일을 실행시켰을 때 다음과 같은 오류가 발생하였다

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.

이 오류는 Django 프로젝트 외부에서 Django에 등록된 모델이나 기능을 사용할 때 발생하는 오류였다

따라서

...

# 1번 파일이 실행될 때 환경변수에 현재 자신의 프로젝트의 settings.py파일 경로를 등록.
import os

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "SIBI_NEWS.settings")

# 2번 실행파일에 Django 환경을 불러오는 작업.
import django

django.setup()

from posts.models import Headline

...

위와 같이 코드를 추가해주어 프로젝트의 모델을 사용할 수 있도록 설정해준 후

파일을 실행시켰을 때 데이터베이스에 저장되는 것을 확인할 수 있었다