Sparta Coding Club/Today I Learned [TIL]

[TIL] #DAY - 018 - 파이썬 장고 실무 기초 (2) (내일배움캠프AI 3기)

양한마리 2022. 9. 24. 00:41
728x90



장고 재미따

진작에 장고할걸...

자료구조, 알고리즘 괜히한듯

어차피 이해도안되는거 괜히 붙잡고있다가 ㅋ

커리큘럼에 알고리즘 왜 앞에있나요...

재밌는 장고 마스터하러 가보자고

오들도 화.이.팅!

 



[목차]

01. 프로젝트 구조 만들기

02. 데이터베이스와 Django ORM 알아보기

03. Django Admin - admin 기능 맛보기

04. ORM의 활용과 Admin 익숙해지기

05. 사용자 관리와 로그인 - 화면 띄우기


01. 프로젝트 구조 만들기

* SNS 만들기


1) 프로젝트 구조 만들기

  • 사용자 관리 (회원가입 / 로그인 / 로그아웃)
  • 글쓰기
  • 친구만들기

위 내용을 공통을 크게 나누면 '사용자''글' 로 나눌수 있다.

$ django-admin startapp user # user 앱 생성
$ django-admin startapp tweet # tweet 앱 생성
  • user앱 - 사용자 관리 ( 회원가입/로그인/로그아웃)을 담당
  • tweet앱 - 글 관리( 글쓰기, 삭제, 수정, 댓글)을 담당

2) 프로젝트 세팅하기  * <프로젝트명> = mysite

  1. mysite/settings.py 열기
  2. settings.py 의 설정들 중 INSTALLED_APPS 에 만든 앱을 추가 한다.
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'tweet', # tweet 앱 추가
    'user', # user 앱 추가
]

 


02. 데이터베이스와 Django ORM 알아보기


1) 데이터베이스 연결하기

  • 장고 실행하기 - settings.py 에 있는 DATABASES 라는 정보를 가지고 있는 데이터 베이스와 자동 연결
  • db.sqlite3 이 생성되었는지 확인, 보통 manage.py 파일이랑 같은 위치에 생성
  • 확장팩에서 SQLite Viewer 설치
  • db.sqlite3 을 확장팩 SQLite Viewer 로 열어서 확인 가능

2) ORM이란?

ORM (Object Relational Mapping) 은 데이터베이스를 하나의 '객체(Object)' 덩어리로 보고, 데이터베이스를 SQL언어가 아닌 클래스로 쉽게 표현 및 사용 할 수 있게 해 줍니다.

class myBakery:
    bread_type = ''  # 빵의 종류
    bake_time = ''  # 굽는 시간
    price = 0  # 가격

3) User Model 만들기

* Django 는 기본적으로 User 모델을 제공합니다.

(직접 제작시 아래 방법)

1-1 에서 생성한 User 앱에서 models.py 를 열어서 아래 코드를 넣어준다.

#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)

tip Django 모델 필드의 주로 사용하는 종류 몇가지

문자열 : CharField, TextField
날짜/시간: DateTimeField, DateField, TimeField
숫자 : IntegerField, FloatField
다른 테이블과 연관을 지어 줄 때 : ForeignKey

4) 만든 모델 데이터베이스에 넣기

* Terminal 에서 아래 내용 실행

  •  데이터베이스 변경을 알려주는 명령어 makemigrations
python manage.py makemigrations

명령어 입력 성공시 위와 같이 출력

  • 변경 된 데이터베이스를 적용시켜주는 migrate
python manage.py migrate

맨 아래에 보면, user.0001_initial 이라고 보이면 적용 완료

  • 데이터베이스 안을 새로고침 해보면 적용 된 모델이 보여진다.

03. Django Admin - admin 기능 맛보기


1) createsuperuser

  • django에서 제공하는 super user를 만들어야 admin 페이지에 접근 가능
  • Terminal 에서 python3 manage.py createsuperuser 입력 후 엔터
  • Username : 이름(id) 설정
  • Email address : 이메일 주소 설정
  • password : 비밀번호 설정
  • password(again) : 제대로된 비밀번호를 적었는지 확인
  • Superuser created successfully.

2) admin 화면에 생성한 모델 등록

user 앱의 admin.py 열어 아래 코드를 넣어준다.

from django.contrib import admin
from .models import UserModel

# Register your models here.
admin.site.register(UserModel) # 이 코드가 나의 UserModel을 Admin에 추가 해 줍니다

04. ORM의 활용과 Admin 익숙해지기


1) Tweet 모델 만들기

tweet앱의 models.py로 들어가서, 아래의 코드를 넣어주세요.

# tweet/models.py
from django.db import models
from user.models import UserModel


# Create your models here.
class TweetModel(models.Model):
    class Meta:
        db_table = "tweet"

    author = models.ForeignKey(UserModel, on_delete=models.CASCADE)
    # ForeignKey는 '외부 모델을 가져와서 사용하겠다.
    content = models.CharField(max_length=256)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

2) 데이터베이스에 알려주고 적용하기

* Terminal 에서 아래 내용 실행

python manage.py makemigrations
python manage.py migrate

다시 서버를 실행 해서 오류가 나지 않는다면 성공

3) admin에 넣어주기

tweet앱의 admin.py에, admin에 추가하는 코드를 작성

from django.contrib import admin
from .models import TweetModel

# Register your models here.
admin.site.register(TweetModel)

다음시간엔 회원가입 로그인 가보자고~


 

728x90
반응형