본문 바로가기

Django

20210129_ Django 가상환경 설정, MVC, MVT

Django

1. 가상환경 설정

한 pc에서 여러 프로젝트 사용시, 각 프로젝트에 같은 패키지를 사용하는데 버전이 다른 것을 사용한다고 할때 계속해서 프로젝트 이동시 패키지를 재설치 해줘야 하는 문제가 생김 -> 프로젝트 별로 패키지를 관리하는 공간이 분리될 필요가 있음


  • 가상환경을 제공하는 패키지 중 하나 : virtualenv
  • 가상환경을 구축하고 싶은 폴더에서 터미널에 pip install virtualenv로 패키지 설치
  • virtualenv 가상환경 이름 터미널에 입력하여 가상환경 생성
  • cd Scripts -> activate 해서 가상환경 활성화 시킴
  • pip install django를 통해서 장고 설치


  • ctrl + shift + p에서 >Terminal : select default shell을 통해서 터미널 상태를 default shell로 cmd로 설정하면 가상환경 활성화가 문제가 없고, 나같은 경우에는 이상하게 상대경로는 활성화가 안되고 절대경로만 되어서 좀 당황했다.
  • 그리고 가상환경 활성화 하면 interpreter도 설정해줘야 한다. 그래서 ctrl + shift + p를 눌러 >Python : select interpreter를 해서 가상환경에 존재하는 python.exe와 연결시켜주었다.

강의 따라서 실습을 하지만,,,, 강의 업데이트좀 했으면 좋겠다. 제발~ 그리고 질문게시판도 없다 ㅠ 어디라고 말은 안하지만

2. Django 개념 익히기

mozilla_Django info

  • Django는 보안이 우수하고 유지보수가 편리한 웹사이트를 신속하게 개발하는 하도록 도움을 주는 파이썬 웹 프레임워크이다.

  • MVC : model - view - controller 로 사용자 인터페이스, 데이터 및 논리 제어를 구현하는데 널리 사용되는 소프트웨어 디자인 패턴이다.

    • model : 데이터와 비즈니스 로직 관리(주로 데이터를 가짐)
    • view : 레이아웃과 화면 처리 (데이터를 보여주는 방식 정의)
    • controller : 명령을 모델과 뷰 부분 라우팅, 모델 및 뷰를 업데이트하는 로직 포함(처리,연결) / 어떨때는 바로 view에 처리 가능

view(input) -(sends)-> controller -(logic)-> model -(updates)-> view(output)


  • django의 코드 구조 (MVT 아키텍쳐)

  • URls(urls.py) : HTTP를 통해 요청을 받아 적절하게 view로 제출

  • view(views.py) : HTTP 요청을 받고 HTTP응답을 반환 처리하는 함수인데 반환처리 하기 위해서 model을 통해 데이터에 접근하고, template에게 서식 설정을 맡김

  • model(models.py) : 응용프로그램의 데이터 구조 정의하고 데이터베이스의 기록을 관리(추가, 수정, 삭제)하고 쿼리하는 방법(데이터베이스에 정보 요청하는 방법)을 제공하는 파이썬 객체

  • template(파일이름.html) : 파일의 구조나 레이아웃을 정의, 실제 내용 보여주는 데 사용되는 플레이스 홀더를 가진 텍스트 파일임(꼭 HTML일 필욘 없음)

  • view가 html 템플릿을 이용해서 동적으로 페이지를 만들고 모델에서 가져온 데이터로 채움

  • 코드 구조 동작

  • HTTP 요청 뷰로 전달하기(urls.py) : URL mapper들이 저장되어 있으며 그중에 urlpatterns 맵퍼는 url 패턴 경로view 함수에 대한 목록들을 정의하여 HTTP요청이 지정한 url패턴과 일치하면 관련된 view함수가 요청을 전달함

  • urlpatterns 리스트 안에 path(), re_path() 함수가 항목으로 존재한다.

  • path(일치시킬 url경로 패턴<사용 인수>, views.일치시 호출될 함수)

  • re_path(정규식, )

3. 장고 기초 구조 만들기, 앱 등록

  • 프로젝트(구조) 만들기 : django-admin startproject 프로젝트 이름
    • 프로젝트 폴더가 생성되고, 안에 똑같은 이름의 프로젝트 폴더가 생성됨
  • 앱(구조) 만들기 : 프로젝트로 들어간 상태에서 django-admin startapp 앱 이름
  • 앱안에 MVT 구조를 사용하기 위해서 templates폴더를 생성

  • 앱을 프로젝트에 등록
    • 프로젝트 폴더에서 settings.py 파일을 살펴보면 INSTALLED_APPS라는 리스트가 나옴 기본적으로 장고에서 설치되어 있는 앱을 나타냄 그곳에 앱 이름을 넣어 등록해주어야 view, model을 사용가능함

4. model 만들기

from django.db import models

# Create your models here.

class Sl_user(models.Model):  # 장고에서 사용하는 models 모듈에서 Model클래스를 상속 받아야 함
    username = models.CharField(max_length=64, verbose_name='사용자명')
    # CharField 캐릭터 필드를 통해서 문자열을 담을 수 있는 필드
    # username이라는 필드를 만드는데 길이는 64,
    # verbose_name은 admin(관리자 창) 사용시 사용할 필드 이름으로 관리자 창에서 username이 아닌 '사용자명'으로 뜸
    password = models.CharField(max_length=64, verbose_name='비밀번호')
    registered_dttm = models.DateTimeField(
        auto_now_add=True, verbose_name='등록시간')
    # dttm 은 datetime의 약자 , DateTimeField 필드로 지정했고,
    # auto_now_add를 활성화 하여 자동으로 현재시간을 Sl_user클래스에 추가

    class Meta:  # 클래스 안에 클래스를 넣어 테이블 명을 따로 지정-> 기본 앱과 구분하기 위해서
        db_table = 'slowbuscamp_user'

5. 관리자 페이지 설정, 활용

  • 프로젝트 디렉토리에서 python manage.py makemigrations 명령어 실행 -> 아까 모델에 작성했던 필드가 적용되어 migrations 폴더 안에 db 관련 폴더(0001_initial.py)가 생성됨

  • python manage.py migrate 명령어 실행 -> db를 생성하는데 아까 settings.py에서 있던 기본앱과 등록한 앱들의 테이블이 생성됨 -> db.sqlite3 파일 생성(settings.py의 DATABASE에서 생성하도록 설정 되어 있다는 것을 확인 할수 있음)

  • makemigrationsmigrate 가 안되면 setting.py의 앱 등록이 잘 되어 있는지를 확인해야 한다.

  • 그리고 db.sqlite3파일 확인을 위해서 sqlite3를 설치해야 한다.

  • sqlite3 download 여기에서 sqlite-tools-win32-x86-3340100.zip를 다운 받아서 압축 해제 하여 넣고 싶은 곳에 넣고 시스템 환경 변수에서 경로 추가를 해주어야 cmd에서 어디에 있는 바로 실행이 가능하다. (참고로 시스템 환경변수 말고 자신의 환경변수에 넣으니 난 잘 되었다.)

  • 그리하여 데이터 베이스 확인은 프로젝트 디렉토리 상태의 터미널 cmd창에서 sqlite3 db.sqlite3를 통해서 해당 파일에 접근 가능하다.

  • sqlite3 활성화 상태에서 .table 명령 사용시 여러가지 테이블을 확인 가능하다

  • .schema 특정 테이블 이름 을 통해서 데이터 베이스의 필드를 확인 가능하다.

  • 만약 model 파일의 필드의 특성들을 수정하면 makemigration, migrate를 실행하여 바로 수정 사항을 데이터 베이스에 반영 가능하다.

Django admin

  • 기본적으로 admin의 경우 settings.py를 통해 활성화 되어 있다.

  • 또한 urls.py의 경우에도 admin은 기본적으로 만들어져 있다.

  • url주소에 admin을 붙이면 관리자 창을 이용할 수 있다.

  • python manage.py runserver를 통해서 서버를 돌리고 해당 ip주소로 들어가면 홈페이지가 뜬다.

  • 해당 ip주소에 /admin을 넣으면 관리자 로그인 화면이 뜬다.

  • 서버 종료는 ctrl + c

  • 로그인을 위해서 계정을 만들어야 하는데 python manage.py createsuperuser 를 통해 만들수 있다.

    • 이를 통해서 로그인 하면 개발자 툴 페이지로 접근 가능하다.

강의가 역시 너무 성의 없다... 계속 뭔 느낌인지는 잘 파악 되지 않지만 따라가고만 있다. 그냥 이렇게 이렇게 한다 하고 쓱 보여주는 느낌이라 더 화난다. 정말이지,,,,,, 그리고 윈도우 환경에 대해서는 고려도 안해준다. 중간 중간에 빠진 부분도 있고. 그래서 오류나 안알려 준것 때문에 엄청 낑낑 거리느라고 많이 진도를 나가진 못했다. 솔직히 이해를 시켜주는게 중요한 것 같은데 그냥 따라 쳐봐라 그냥 이거 밖에 없는 것 같다.
유료 강의 수강 했는데 기초 언어 강의는 정말 좋았는데 가면 갈수록 실망이다. 더 reference를 찾아보고 읽어보고, 생활 코딩이나 유튜브 강의를 참고 해야 겠다.