티스토리 뷰
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들을 실행시켜주고, 자동으로 데이터베이스 스키마를 관리
이 파일은 현재 Django 인스턴스에서 활성화된 모든 Django 어플리케이션들의 이름이 담겨 있습니다. 앱들은 다수의 프로젝트에서 사용될 수 있고, 다른 프로젝트에서 쉽게 사용될 수 있도록 패키징하여 배포할 수 있습니다.
기본적으로는, INSTALLED_APPS는 Django와 함께 딸려오는 다음의 앱들을 포함합니다.
- django.contrib.admin -- 관리용 사이트. 곧 사용하게 될 겁니다.
- django.contrib.auth -- 인증 시스템.
- django.contrib.contenttypes -- 컨텐츠 타입을 위한 프레임워크.
- django.contrib.sessions -- 세션 프레임워크.
- django.contrib.messages -- 메세징 프레임워크.
- django.contrib.staticfiles -- 정적 파일을 관리하는 프레임워크.
이 어플리케이션들은 일반적인 경우에 사용하기 편리하도록 기본으로 제공됩니다.
이러한 기본 어플리케이션들 중 몇몇은 최소한 하나 이상의 데이터베이스 테이블을 사용하는데, 그러기 위해서는 데이터베이스에서 테이블을 미리 만들 필요가 있습니다.
'python > Django' 카테고리의 다른 글
(macOS)[python] django post_list site에 구현하기 - 1/2 (0) | 2019.10.11 |
---|---|
(macOS)[python] localhost(127.0.0.1:8000) main page에 "Welcome to visit django:jinoblog2019" 출력하기 (0) | 2019.10.10 |
[python] django(장고, 웹 프레임워크), MTV Architecture: Model-Template-View (0) | 2019.10.08 |
(macOS)[python] django 설치 (0) | 2019.10.07 |
(macOS)[python] virtualenv 가상환경 만들기 (0) | 2019.10.07 |
- Total
- Today
- Yesterday
- vscode
- ERP
- 코로나
- arduino
- 확진
- pyserial
- 라즈베리파이
- server
- CSV
- Python
- Pandas
- Regression
- 자가격리
- sublime text
- MacOS
- Django
- analysis
- template
- DS18B20
- raspberrypi
- Raspberry Pi
- 코로나19
- DAQ
- github
- Templates
- SSH
- COVID-19
- Model
- git
- r
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |