개발/PYTHON-DJANGO

파이썬 장고 2. 앱생성 및 코어와의 연결

Aireee 2021. 6. 21. 00:23
300x250
반응형

지난 시간 새로운 프로젝트를 생성하면 이런식으로 폴더와 파일이 생성되어 있음을 볼 수 있을 것이다. (folder) __pycache__ 안에도 파일이 있기는 하지만 생략한다.

[folder] mysite
    [folder] mysite
        [folder] __pycache__
        __init__.py
        asgi.py
        settings.py # 셋팅파일
        urls.py # 경로파일
        wsgi.py
    db.sqlite3 # 데이터베이스
    manage.py # 실행파일

지금 우리에게 중요한 파일은 단지 settings.py 와 urls.py 파일 뿐이다. 그리고 db.sqlite3 는 사용가능한 기본 데이터베이스인데, 나중에 mysql 로 바꾸지 않을까 싶다. 그리고 manage.py 는 사실상 실행파일 정도로 생각하면 될것 같다. 그렇다고 지금 settings.py 와 urls.py 파일을 바로 열어보진 않을 것이다. 

이제 우리가 해야할 일은 앱을 생성하는 것이다. 큰 프로젝트 안에는 여러동작을 하는 기능들이 존재해야 하는데, 그 기능을 하나하나 작업할 수 있는 가장 기본이 되는 작업이라고 보면 되겠다. 예를들면, 회원가입과 그런것들이 필요하다면 "계정" 앱을 만들어야만 한다. 게시판을 이용하려면 게시판 앱을 만들면 좋을 것이다. (하나의 앱에 다 집어 넣어도 될 것 같다는 생각이 들기는 하지만 왠지 그래서는 안될 것만 같다). 그렇다면 앱은 어떻게 만들어야 하는가?

1. 신규 앱의 생성

cmd 를 열고, "manage.py" 파일이 있는 폴더로 이동하여 아래와 같은 명령어를 실행한다. 여기서 memberApp 은 내가 만들어줄 앱의 이름이므로 마음대로 해도 무관하다.

python manage.py startapp memberApp

이렇게, 신규 앱을 생성하면 폴더의 상황은 이렇게 변한다

[folder] mysite
        [folder] memberApp
                [folder] migrations
                        __init__.py
                __init__.py
                admin.py
                apps.py
                models.py
                tests.py
                views.py  
        [folder] mysite
                [folder] __pycache__
                __init__.py
                asgi.py
                settings.py
                urls.py
                wsgi.py
        db.sqlite3
        manage.py

짙은색깔로 작성된 부분이 명령어 한방에 생성된 파일들이다. 참 쉽지 아니한가, 저 명령어가 없었더라면 모든걸 하나하나 만들어 주었어야만 할 것이다. 이제, 해야 할 것은 이 앱을 코어와 연결하는 것이다. 이것은 자동이 아니기 때문이다. 

2. settings.py 파일 수정

mysite\mysite\settings.py 파일을 열자. 그리고, 아래부분을 찾는다

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

그리고 이 부분을 아래와 같이 수정한다

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'memberApp',
]

말이 수정이지 그냥 memberApp 을 추가해주는 것이다. (변경된 부분이 그 부분밖에 없다) 만든 프로그램을 사용하려면 인스톨이라는 것을 해야 하는건 당연하니까 말이다. 

약간 다른식으로 연결도 가능하다고 한다. memberApp 이라는 폴더명 대신 조금 더 구체적으로 써주는 것이다.

 

memberApp.apps.MemberappConfig

memberApp 안의 apps.py 파일 안에 MemberAppConfig 이라는 class 가 존재한다. 실상은 이것을 연결해주는 것이다. 아마도 memberApp 만 연결할 경우 모든 class 가 다 적용되는 것은 아닐지 의심해본다. 

우리는 앱을 만들었지만, 아직 앱 안에는 아무런 내용이 없기 때문에 내용을 채워주어야 하는데, 이 부분은 다음편으로 넘기고자 한다. 
왜냐하면, 섞어 놓을 경우 앱을 만들 때마다 좀 햇갈리고 이해가 안될 것 같다는 생각 때문이다. (본인 생각임)

반응형