django | February 14, 2020
app을 만들고 프로젝트에 연결까지 시켰다.
이제 app의 기능을 구현할 차례다.
[App 만드는 순서]
models.py ⇒ views.py ⇒ urls.py
models.py
: 테이블 생성. data를 담을 주머니를 만든다.views.py
: 로직. 데이터 넣고 저장하고 보내고 등등 데이터랑 일한다.urls.py
: request를 받으면 연결연결해서, 이걸 처리할 수 있는 endpoint까지 보낸다.#app_name/models.py
from django.db import models
class User(models.Model):
name = models.CharField(max_length = 50)
email = models.CharField(max_length = 200)
phone = models.CharField(max_length = 30)
password = models.CharField(max_length = 500)
created_at = models.DataTimeField(auto_now_add = True)
updated_at = models.DateTimeField(auto_now = True)
class Meta:
db_table = 'users' #없어도 상관없는. 편리함을 위해 테이블 이름을 정해주는 역할
class Meta 는 meta 데이터로, 옵션값이다. 여기에서의 역할은 그냥 테이블 이름만 정해준다.
테이블 이름을 정해주지 않으면 장고에서 자동으로 app_app과 같은 형식으로 지정한다.
Meta data : 대량의 정보 가운데에서 찾고 있는 정보를 효율적으로 찾아내서 이용하기 위해 일정한 규칙에 따라 콘텐츠에 대하여 부여되는 데이터이다. 어떤 데이터 즉 구조화된 정보를 분석, 분류하고 부가적 정보를 추가하기 위해 그 데이터 뒤에 함께 따라가는 정보를 말한다.
****만약에 모델 클래스에 id라는 걸 사용하면 어찌되나?
****Meta에 db_table이라는 단어도 딱 저렇게 사용해야되나?
$ python manage.py makemigrations (app_name)
Migrations for 'user':
user/migrations/0001_initial.py
- Create model Userlcd
여기에서 migration이 어떻게 만들어졌는지 자세히 보고 싶다면, 위에 나온 경로를 열면 된다.
$ cat user/migrations/0001_initial.py
# Generated by Django 3.0.3 on 2020-02-07 04:56
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='User',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=50)),
('email', models.CharField(max_length=200)),
('phone', models.CharField(max_length=30)),
('password', models.CharField(max_length=500)),
('created_at', models.DateTimeField(auto_now_add=True)),
('updated_at', models.DateTimeField(auto_now=True)),
],
options={
'db_table': 'users',
},
),
]
****python manage.py sqlmigrate account 0001 #번호 정할 수 있음. 이거랑 python manage.py migrate랑 뭐가 다른가?
makemigrations는 되어 있지만 아직 migrate 안 된 것들을 볼 수 있다.
migrate까지 완료되면 [X] 라고 표시된다.
$ python manage.py showmigrations
contenttypes
[ ] 0001_initial
[ ] 0002_remove_content_type_name
sessions
[ ] 0001_initial
user
[ ] 0001_initial
migrate까지 완료하면 table이 만들어진다.
python manage.py migrate (app_name)
sqlite3 db.sqlite3
⇒ .tables
: table이 잘 생성됐는지 확인한다.
(sqlite3은 django에서 기본으로 제공하는 database)
table에 내가 만든 users가 생겼다.
나머지 3개는 django가 필요해서 만든 table들이며, django가 만든 것들은 앞에 ‘django’라고 붙는다.
sqlite3를 끝내려면 ctrl + d
(ctrl + c는 break)
$ sqlite3 db.sqlite3
SQLite version 3.31.1 2020-01-27 19:55:54
Enter ".help" for usage hints.
sqlite> **.tables**
django_content_type django_session
django_migrations **users**