[SSAC X 코딩온] (2021.08.20) Django 입문 수업 3일차

RyuSW·2021년 8월 30일
0
post-thumbnail

🎬 'VScode ↔ Django 연동시키기' 먼저 보고 오기!👊


  • 이번에 작성할 게시글은 Putty 터미널에서 하지 않고 VScode에서 작업할 것이기 때문에 이번 실습을 하기 전에 Visual Studio Code와 Django를 꼭 연결시켜주기!

📑 Model 생성하기

  • Model은 Django의 MTV패턴 중 'M'을 담당한다.

  • 프로젝트에서 회원 관리 등을 담당하는 데이터베이스를 SQL문 없이 App에 접근할 수 있게 해줌

  1. VScode를 열고 프로젝트 → App폴더를 열면 __init__.py, apps.py, urls.py 등 등의 Python 파일들이 있는 것을 확인 할 수 있다! 그 중 models.py 파일 열기!

  2. models.py 파일 작성

from django.db import models

# Create your models here.
# ORM의 역할 : SQL을 직접 작성하지 않아도 DB로 접근해 CRUD(조회/추가/수정/삭제)가 가능하게 해준다.
# 이 Model은 Create의 Table문이라고 생각하면 된다!

class User(models.Model):
    # 테이블명은 단수로 적어주어야 한다. 괄호()안은 모델을 만들기 위한 규칙. 얘는 지금 모델입니다~
    userid = models.CharField(max_length=64, verbose_name='아이디')
    # userid는 컬럼명
    # CharField는 문자열 필드. Varchar랑 용도 유사
    # max_length는 최대 길이, 길이 제한.
    username = models.CharField(max_length=64, verbose_name='이름')
    password = models.CharField(max_length=64, verbose_name='비밀번호')
    registered = models.DateTimeField(auto_now_add=True, verbose_name='등록')
    # DataTimeField auto_now_add=True > DB테이블에 자동 기입될 현재 시각
    # 0000-00-00 00:00:00 datetime

    GENDERS = ( ('M', '남성(Man'), ('W', '여성(Woman)') )
    gender = models.CharField(max_length=1, verbose_name='성별', choices=GENDERS)
    # enum( 'M' , 'W' ), 'M'과 'W' 뒤에 오는 인자는 verbose의 별칭으로 적용된다.
    # enum의 개념은 리스트형. 해당 컬럼의 데이터 타입 enum(1,2,3,4,5,6,7)

    # =True (기본값은 False)
  • 자주 사용되는 Field Type:
    + BooleanField : True/False 값을 저장하는 필드.
    + CharField : 문자열 데이터를 저장하는 필드.
    + DateField : 날짜 데이터를 저장하는 필드.
    + IntegerField : 정수 데이터를 저장하는 필드.
    + TextField : 글자 수 제한이 없는 문자열 데이터를 저장하는 필드.
    + URLField : url입력하는 필드

  • 자주 사용되는 Field Option:
    + null : null 허용 여부 (기본값은 False)
    + default : 디폴드 값 지정, 혹은 리턴해줄 함수 지정
    + unique : 현재 테이블 내 유일성 여부 (기본값은 False)
    + choices : select 박스 사용시 사용

Field Type, Option 참고 자료 출처

  1. Putty 터미널을 실행시켜서 다음과 같은 명령어를 실행시킨다.

    python3 manage.py makemigrations

  • Model을 만들고 정의했으면 Django에서 변경사항을 저장하고 DB한테도 변경사항을 알려주는 일종의 최종보고서와 같은 역할을 수행한다.

  1. 그 다음 Migration을 적용시키기 위해서 다음과 같은 명령어를 실행시킨다.

    python3 manage.py migrate

    • 여기까지 하면 변경 사항과 DB의 스키마 동기화 작업이 다 완료된 것이다😀

    • Migration 상태를 확인해보고 싶다면 다음과 같이 명령어를 입력하면 된다.

      python3 manage.py showmigrations

  2. 관리자 페이지 내용을 영어가 아닌 한글로 보고 싶다면 'settings.py' 안에서 다음과 같이 수정한다.

  1. models.py이 있는 App폴더에 같은 위치에 있는 admin.py 파일을 작성한다.
  • 이 과정을 완료하게 되면 Django에서 관리자 페이지를 열 수 있게 된다.
from django.contrib import admin
from .models import User
# Register your models here.

admin.site.register(User)
# admin이라는 사이트에 user를 등록할 것이다.
  1. Django 서버를 실행시키고 다음 링크에 접속하면 관리자 로그인 페이지로 접속할 수 있게 됨
  • [본인 IP주소]:[본인 Port번호]/admin 접속


🖨 절대관리자 계정, 비밀번호 설정하기

  • 로그인을 할 때 슈퍼관리자의 계정이 필요함

  • 우분투 터미널에서 슈퍼관리자의 계정과 비밀번호를 설정할 수 있음


  1. 절대관리자의 계정을 만들 명령어를 입력:

python3 manage.py createsuperuser

  1. 사용자이름(default : root), 이메일주소, 비밀번호를 새로 만들어준다.

  2. 위의 과정을 다 마쳤으면 관리자 로그인 페이지에서 로그인 해보기!

로그인 성공!!ヾ(≧▽≦*)o


🖥 작성했던 Model 페이지에서 확인하는 법


- 본인이 작성한 App이름 밑에 있는 User에 추가 버튼이 있다. 클릭!

  • models.py 에서 작성했던 필드가 반영이 된 것을 확인 할 수 있다!

  • Model 파일에서 필드를 추가할 때 다음과 같은 사항들이 반영되지 않으면 에러가 발생할 수 있다!
    Ex) username = models.CharField(max_length=64, verbose_name='이름', '여기에 들어갈 내용')

    • null=True (NULL을 허용해주기)
    • default= 알아서 적기 (기본값을 지정해준다.)

⚠ Port가 이미 사용중일 때 대처법!

  • 서버를 실행시키다 보면 해당 Port는 이미 사용중이라는 메세지가 뜰 때가 있다. 이 때 진짜 뇌정지옴

  • 그럴 땐 실행 중인 Port를 죽여야 하는 데 다음과 같이 조치하면 된다!

  1. Putty 터미널창에 다음과 같은 명령어 입력

    netstat -tnlp

  2. 그 후 출력되는 화면 중 본인의 PID번호 확인

  3. 아래 명령어를 입력해서 Port를 죽인다.

    kill -9 'PID'


  1. 그 후 다시 서버로 들어가면 정상 접속이 되는 것을 확인할 수 있다 ( •̀ ω •́ )✧
profile
배운 것은 항상 그 때 문서화하자!

0개의 댓글