티스토리 뷰

0. migrations status

django를 설치하면 기본적인 앱이 settings.py의 INSTALLED_APPS에 등록되어있다.

 

--settings.py : default

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

 

 

현재 migrate된 상태를 확인 해보면 다음과 같다.

$ python3 manage.py showmigrations

admin

 [X] 0001_initial

 [X] 0002_logentry_remove_auto_add

 [X] 0003_logentry_add_action_flag_choices

auth

 [X] 0001_initial

 [X] 0002_alter_permission_name_max_length

 [X] 0003_alter_user_email_max_length

 [X] 0004_alter_user_username_opts

 [X] 0005_alter_user_last_login_null

 [X] 0006_require_contenttypes_0002

 [X] 0007_alter_validators_add_error_messages

 [X] 0008_alter_user_username_max_length

 [X] 0009_alter_user_last_name_max_length

 [X] 0010_alter_group_name_max_length

 [X] 0011_update_proxy_permissions

contenttypes

 [X] 0001_initial

 [X] 0002_remove_content_type_name

sessions

 [X] 0001_initial

 

[]는 적용전, [X]는 적용 후

 

1. superuser 등록

(jbe)$ python3 manage.py createsuperuser

사용자 이름 (leave blank to use 'UserID'): 

이메일 주소: 

Password: 

Password (again): 

Superuser created successfully.

 

browser 주소창에 http://127.0.0.1:8000/admin/입력하면 주소창이 http://127.0.0.1:8000/admin/login/?next=/admin/ 로 변경되면서 django 기본앱 admin 로그인 화면으로 전환된다.

 

사용자 이름과 비밀번호 입력 후 로그인을 하면 다음과 같은 Forbidden(403)을 만나기도 한다.

앞으로 자주 만나게 될 화면이다.

뒤로가기를 누르면 정상 로그인된 화면으로 전환된다.

주소창은 다시 http://127.0.0.1:8000/admin/로 전환된다.

아래 그림에는 우측 상단에 '사이트 보기'라는 탭이 있는데(개인정보라 잘라붙임) 클릭하면 http://127.0.0.1:8000/로 이동된다.

'로그아웃' 탭을 클릭하면 http://127.0.0.1:8000/admin/logout/로 이동하며 로그아웃된다.

 

 

2. app 설치하기 : jinozblog2019 project 내에 jblog(기본설정 모듈)가 있고 앱을 추가한다.

--jinozblog2019 tree : jinozblog2019 폴더 내 manage.py를 이용하여 추가 앱을 생성할 수 있다.

.

├── db.sqlite3

├── jblog

│   ├── __init__.py

│   ├── settings.py

│   ├── urls.py

│   └── wsgi.py

└── manage.py

--jinozblog2019 tree

 

# post app 설치

(jbe)$ python3 manage.py startapp post

--jinozblog2019 tree

.

├── db.sqlite3

├── jblog

│   ├── __init__.py

│   ├── settings.py

│   ├── urls.py

│   └── wsgi.py

├── manage.py

└── post

    ├── __init__.py

    ├── admin.py

    ├── apps.py

    ├── migrations

    │   └── __init__.py

    ├── models.py

    ├── tests.py

    └── views.py

--jinozblog2019 tree

 

하기와 같이 'post', 를 settings.py에 등록한다.

--settings.py 

INSTALLED_APPS = [

    'post',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

 

 

# post app 생성 후 migrations status

$ python3 manage.py showmigrations

admin

 [X] 0001_initial

 [X] 0002_logentry_remove_auto_add

 [X] 0003_logentry_add_action_flag_choices

auth

 [X] 0001_initial

 [X] 0002_alter_permission_name_max_length

 [X] 0003_alter_user_email_max_length

 [X] 0004_alter_user_username_opts

 [X] 0005_alter_user_last_login_null

 [X] 0006_require_contenttypes_0002

 [X] 0007_alter_validators_add_error_messages

 [X] 0008_alter_user_username_max_length

 [X] 0009_alter_user_last_name_max_length

 [X] 0010_alter_group_name_max_length

 [X] 0011_update_proxy_permissions

contenttypes

 [X] 0001_initial

 [X] 0002_remove_content_type_name

post

 (no migrations)

sessions

 [X] 0001_initial

 

 

3. post app 변경 및 반영(migraions)

3.1. models.py에 Post class 정의

--post/models.py

from django.db import models

# Create your models here.

class Post(models.Model):
    pub_date = models.DateTimeField('date published')
    title = models.CharField(max_length=20)
    text = models.CharField(max_length=300)

    def __str__(self):
        return self.text

 

 

3.2. post.models를 post.admin에 적용

--post/admin.py

from django.contrib import admin
from post.models import Post

# Register your models here.

admin.site.register(Post)

 

--post/admin.py

 

3.3. post app의 models.py가 수정되었으니 반영(migrations) 해준다.

(jbe)$ python3 manage.py makemigrations post

Migrations for 'post':

  post/migrations/0001_initial.py

    - Create model Post

(jbe)$ python3 manage.py showmigrations

admin

 [X] 0001_initial

 [X] 0002_logentry_remove_auto_add

 [X] 0003_logentry_add_action_flag_choices

auth

 [X] 0001_initial

 [X] 0002_alter_permission_name_max_length

 [X] 0003_alter_user_email_max_length

 [X] 0004_alter_user_username_opts

 [X] 0005_alter_user_last_login_null

 [X] 0006_require_contenttypes_0002

 [X] 0007_alter_validators_add_error_messages

 [X] 0008_alter_user_username_max_length

 [X] 0009_alter_user_last_name_max_length

 [X] 0010_alter_group_name_max_length

 [X] 0011_update_proxy_permissions

contenttypes

 [X] 0001_initial

 [X] 0002_remove_content_type_name

post

 [ ] 0001_initial

sessions

 [X] 0001_initial

 

post가 migrations(적용 전 [])되어있는 것을 확인할 수 있다.

 

# 반영(migrations) 후 적용(migrate) 해주면 다음과 같다.

(jbe)$ python3 manage.py migrate

Operations to perform:

  Apply all migrations: admin, auth, contenttypes, post, sessions

Running migrations:

  Applying post.0001_initial... OK

(jbe)$ python3 manage.py showmigrations

admin

 [X] 0001_initial

 [X] 0002_logentry_remove_auto_add

 [X] 0003_logentry_add_action_flag_choices

auth

 [X] 0001_initial

 [X] 0002_alter_permission_name_max_length

 [X] 0003_alter_user_email_max_length

 [X] 0004_alter_user_username_opts

 [X] 0005_alter_user_last_login_null

 [X] 0006_require_contenttypes_0002

 [X] 0007_alter_validators_add_error_messages

 [X] 0008_alter_user_username_max_length

 [X] 0009_alter_user_last_name_max_length

 [X] 0010_alter_group_name_max_length

 [X] 0011_update_proxy_permissions

contenttypes

 [X] 0001_initial

 [X] 0002_remove_content_type_name

post

 [X] 0001_initial

sessions

 [X] 0001_initial

 

post가 migrate(적용 후 [X])되어있는 것을 확인할 수 있다.

 

 

4. localhost에서 post app 변경 및 반영 확인하기

http://127.0.0.1:8000/admin/로그인 후 사이트 관리에 POST가 생성되어있음을 확인 할 수 있다.

posts +추가 클릭하면 다음과 같은 화면이 적용되어있다.

3.1.에서 정의한 Post를 3.2. post.models를 post.admin에 적용한 결과

 

ref. post/admin.py의 admin.site.register(Post) 부분을 주석처리(#) 후 server 재시작하면 다음과 같이 POST 부분이 비활성화 된다.

--post/admin.py

from django.contrib import admin
from post.models import Post

# Register your models here.

# admin.site.register(Post)

 

 

 

용어정리

출처 : https://docs.djangoproject.com/ko/2.1/intro/tutorial02/

 

migration : Django가 모델(즉, 데이터베이스 스키마를 포함한)의 변경사항을 저장하는 방법으로써, 디스크상의 파일로 존재

migrate : migration들을 실행시켜주고, 자동으로 데이터베이스 스키마를 관리

 

INSTALLED_APPS

이 파일은 현재 Django 인스턴스에서 활성화된 모든 Django 어플리케이션들의 이름이 담겨 있습니다. 앱들은 다수의 프로젝트에서 사용될 수 있고, 다른 프로젝트에서 쉽게 사용될 수 있도록 패키징하여 배포할 수 있습니다.

기본적으로는, INSTALLED_APPS는 Django와 함께 딸려오는 다음의 앱들을 포함합니다.

이 어플리케이션들은 일반적인 경우에 사용하기 편리하도록 기본으로 제공됩니다.

이러한 기본 어플리케이션들 중 몇몇은 최소한 하나 이상의 데이터베이스 테이블을 사용하는데, 그러기 위해서는 데이터베이스에서 테이블을 미리 만들 필요가 있습니다. 

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함