본문 바로가기
Web/Django

[Web] django로 Todolist 만들기 for Mac - 2

by skwkiix 2023. 7. 28.
728x90

(프로젝트 구성 ~ HTML 사용하기)는 이전 포스팅을 참고하길 바란다.)

1. 모델 만들기

MVC(Model, View, Controller)

소프트웨어 개발 방법론 중 하나

장고에서 데이터를 사용하기 위한 필수 조건

  • 사용할 데이터 베이스 설정 ( 기본값 : sqlLite)
  • 테이블 형태 정의

1) 모델 생성

(1) models.py 설정

from django.db import models
​
# Create your models here.
​
class Todo(models.Model):
   content = models.CharField(max_length= 255)

하나의 모델을 하나의 클래스로 나타냄

Todo라는 모델에 대해서 데이터가 content 라는 값 하나를 가짐.

데이터의 형태 : charfield 형태

데이터 최대 길이 : 255

(2) 모델을 서버에 적용

  • python manage.py makemigrations
    • my_to_do_app에 migration 이라는 폴더 생성
$ ls
db.sqlite3 manage.py* my_to_do_app/ ToDoList/
​
$ python manage.py makemigrations
Migrations for 'my_to_do_app':
my_to_do_app\migrations\0001_initial.py
   - Create model Todo
  • python manage.py migrate
    • migration 파일들을 확인해서 데이터 베이스에 적용
    • 0001.initial 파일 생성
$ python manage.py migrate
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying admin.0003_logentry_add_action_flag_choices... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying auth.0009_alter_user_last_name_max_length... OK
Applying auth.0010_alter_group_name_max_length... OK
Applying auth.0011_update_proxy_permissions... OK
Applying auth.0012_alter_user_first_name_max_length... OK
Applying my_to_do_app.0001_initial... OK
Applying sessions.0001_initial... OK

(3) 확인

  • Django DB에 접근해서 확인

python manage.py dbshell

$ python manage.py dbshell
SQLite version 3.39.3 2022-09-05 11:02:23
Enter ".help" for usage hints.
sqlite>
  • 테이블 확인

.tables

sqlite> .tables
auth_group                 django_admin_log
auth_group_permissions     django_content_type       
auth_permission             django_migrations
auth_user                   django_session
auth_user_groups           my_to_do_app_todo
auth_user_user_permissions
  • 테이블 정보 확인

PRAGMA table_info(my_to_do_app_todo);

sqlite> PRAGMA table_info(my_to_do_app_todo);
0|id|INTEGER|1||1
1|content|varchar(255)|1||0
  • 데이터 확인
    • SELECT * FROM my_to_do_app_todo;
sqlite> SELECT * FROM my_to_do_app_todo;

아무런 데이터가 없기 때문에 조회되지는 않는다.

 

다음 포스팅에서는 텍스트가 서버에 전송될 수 있도록 코드를 구현한다.