웹 프레임워크
⭐ 프레임워크는 개발을 도와주는 하나의 틀
2) 이미 많은 기능들을 제공하고 있는 형태: 웹서비스에 공통적으로 필요한 부분들이 미리 구현되어 있음
장고가 일하는 방식
즉,
서버쪽 데이터베이스를 만든느 것은 Model을 작업하는 것이고
웹 페이지 화면을 만드는 것은 Template를 작업하는 것이고
템플릿에서 서버에 일을 시키는 건 View를 작업하는 것
1. 사용자가 url 요청 ➡ 크롬/사파리 등의 인터넷 브라우저
2. mySpartaSns에 요청이 접수 ➡ settings.py가 있는 가장 처음 작성한 앱의 urls.py
3. 등록된 url 찾기 ➡ urls.py에 연결된 앱에 생성한 urls.py
4. 해당 url에 등록된 view 찾기
👉 Django의 ORM은 파이썬 데이터베이스 클래스 모델을 만들고, 만든 모델을 바탕으로 자동으로 데이터베이스를 다룰 수 있도록 돕는다. 흔히 '쿼리'(데이터베이스를 다루기 위해 사용하는 언어)라고 하는 부분들을 작성하지 않아도 된다
📒 ORM(Object Relational Mapping)는 데이터베이스를 하나의 객체(Object)로 보고 데이터베이스를 SQL언어가 아닌 클래스로 쉽게 표현 및 사용할 수 있게 한다
예)
class Post:
id = IntegerField()
title = CharField()
author = CharField()
context = TextField()
INSTALLED_APPS - 장고에 설치 된 앱들
MIDDLEWARE - 사용자 요청/응답 사이에서 작동하는 시스템들
TEMPLATES - 나의 html파일을 자동으로 인식
DATABASES - 내가 사용할 데이터베이스 연동 설정
AUTH_PASSWORD_VALIDATORS - 패스워드 보안 수준 검증
LANGUAGE_CODE - 화면에 어떤 언어를 보여줄것인지
TIME_ZONE - 우리가 어떤 시간에 있는지
class Post:
id = IntegerField()
title = CharField()
author = CharField()
context = TextField()
django 모델 필드의 종류
문자열 : CharField, TextField
날짜/시간: DateTimeField, DateField, TimeField
숫자 : IntegerField, FloatField
다른 테이블과 연관을 지어 줄 때 : ForeignKey
사용 예시)
#user/models.py
from django.db import models
# Create your models here.
class UserModel(models.Model):
class Meta:
db_table = "my_user"
username = models.CharField(max_length=20, null=False)
password = models.CharField(max_length=256, null=False)
bio = models.CharField(max_length=256, default='')
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
$ django-admin startapp user #user이라는 app 생성
$ django-admin startapp tweet #tweet이라는 app 생성
python manage.py makemigrations #데이터베이스 변경을 알려주는 명령어
python manage.py migrate #변경된 데이터베이스를 적용시켜주는 명령어
python manage.py createsuperuser #관리자 생성