🌈 프로그래밍/Django

PyCharm Django에서 Django 콘솔 구성하기

반응형

 

파이참에서는 빌드, 실행, 배포 > 콘솔 > Django 콘솔을 제공해주는데, 

여기서 아래쪽에 시작 스크립트 부분에서는 직접 코드를 수정할 수 있도록 제공해준다.

이 시작 스크립트에 작성된 부분은 IDE에서 해당 콘솔을 시작할 때 실행시켜주며, 이 콘솔을 통해서 다양한 작업들을 할 수 있게 도와준다.

예를 들어, 디버그 해야 하는 부분이 있어서 환경을 맞추고 디버그하기 위해 사용한다거나 필요한 실행 스크립트를 직접 실행시킨다거나 등등..

아무튼 그러면 나의 Django 프로젝트에서 사용하고 있는 모델 정보들을 이 시작 스크립트에서 모두 불러오게 커스텀이 필요하다!

 

1. django_extensions 설치

프로젝트 내에 해당 라이브러리를 설치해주어야 한다.

이 라이브러리는 운영단까지는 필요없으므로, 개발 환경단에서만 사용되어질 수 있도록 의존성을 추가해주도록 하자.

INSTALLED_APPS += [
    "django_extensions",
]

설치 이후에 사용할 환경단에 해당 앱을 추가해준다.

 

2. 시작 스크립트 작성

그럼 이제 다시 시작 스크립트로 돌아와서, 해당 라이브러리를 활용해서 나의 프로젝트 내의 존재하는 모든 모델 정보를 불러오도록 하는 스크립트를 작성하자.

import sys
import django
from django.conf import settings
from django_extensions.management import shells
from django.core.management.color import color_style

# Django 환경 설정
print(f"Python {sys.version} on {sys.platform}")
print(f"Django {django.get_version()}\n")

if hasattr(django, "setup"):
    django.setup()

# 데이터베이스 정보 출력
db_settings = settings.DATABASES.get("default", {})
print("현재 설정된 데이터베이스 정보:")
print(f"  DB 이름: {db_settings.get('NAME', '알 수 없음')}")
print(f"  DB 엔진: {db_settings.get('ENGINE', '알 수 없음')}\n")

# Shell 환경 변수 로드
imported_items = shells.import_objects({}, color_style())
globals().update(imported_items)

그리고 데이터베이스 정보도 중요하다고 생각해서, 실행할 때 내가 어떤 데이터베이스에 접근하고 있는지 최초에 콘솔을 실행하면 노출되어지게 해주었다. 실수로라도 잘못 연결되는 것을 방지하기 위해서!

이렇게 작성하고, 적절한 환경 변수를 적용해준다.

 

3. 실행

그러면 이제 IDE로 돌아와서, 콘솔을 실행시켜 보도록 하자.

나의 환경같은 경우는 다음과 같은 결과가 도출되어졌다.

PyDev console: starting.
Python 3.11.7 (v3.11.7:fa7a6f2303, Dec  4 2023, 15:22:56) [Clang 13.0.0 (clang-1300.0.29.30)] on darwin
Django 4.2.16

현재 설정된 데이터베이스 정보:
  DB 이름: local
  DB 엔진: django.db.backends.mysql

# Shell Plus Model Imports
from app_pushs.models import AppPushHistory, ManagerFcmToken
from authentications.models import PassToken, V3AuthGroup, V3AuthUser
from django.contrib.auth.models import Group, Permission
from django.contrib.contenttypes.models import ContentType
from django.contrib.sessions.models import Session
from managers.models import EmergencyTransferRequestHistory, EvidenceDocumentURL, FixedMatchCancelRequest, FixedMatchCancelRequestMatch, Manager, ManagerAdd, ManagerApplicantHistory, ManagerApplicantModusignContractDocument, ManagerApplicantOnlineResult, ManagerApplicantPreferredStadium, ManagerApplicantPrivateInfo, ManagerDeposit, ManagerEquipmentRequestHistory, ManagerEquipmentReturnRequestHistory, ManagerHurry, ManagerMonthlySettlement, ManagerPayTransactionLog, ManagerRecruitmentHistoryManagement, ManagerSettlement, ManagerSettlementAdjustmentRequest, ManagerSettlementChangedLog, ManagerTip, ManagerWarning, ManagerWarningHistory, ManagerWithdrawal, MatchExceptRequest, MatchExceptRequestMatch, MatchTypePay, StadiumManagerManagementStadiumGroup, V3ManagerProfile
from matchs.models import BadManager, BadManagerType, BadReview, BadReviewType, BadUser, Customer, FairPlay, FairPlayType, Fit, FitRecord, FixedMatch, GoodManager, GoodManagerType, GoodUser, GoodUserType, League, LeagueApplyTeam, LeagueResult, LeagueRound, LeagueSeason, LeagueType, ManagerApply, ManagerMatchHistory, ManagerReview, Match, MatchApply, MatchApplyMemo, MatchApplyMemoType, MatchComment, MatchDate, MatchDay, MatchDetail, MatchPlayer, MatchSale, MatchTag, MatchTeam, MatchTrainee, MatchType, MatchUserTag, Order, Owner, PenaltyCard, PlaberOfTheMatch, ProductChangeLog, Review, StadiumProduct, StadiumProductItem, StadiumProductItemTime, StadiumProductReserve, Team, TeamSchedule, UserLevel, UserPhone, Yoil
from notices.models import ManagerNotice
from notifications.models import ManagerAppNotification
from plab_zones.models import PlabZone
from rest_framework_simplejwt.token_blacklist.models import BlacklistedToken, OutstandingToken
from stadiums.models import Area, AreaGroup, District, FilterArea, FilterAreaGroup, ManagerPriorityHiringStadiumGroup, Region, Stadium, StadiumGroup, StadiumImage
from users.models import Profile, User, UserCashBalance, UserSessionLog

# Shell Plus Django Imports
from django.core.cache import cache
from django.conf import settings
from django.contrib.auth import get_user_model
from django.db import transaction
from django.db.models import Avg, Case, Count, F, Max, Min, Prefetch, Q, Sum, When
from django.utils import timezone
from django.urls import reverse
from django.db.models import Exists, OuterRef, Subquery

최초 실행 시 적절하게 잘 필요한 것들을 가져오는 모습이다!

반응형