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 개념 익히기
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에서 생성하도록 설정 되어 있다는 것을 확인 할수 있음)makemigrations
및migrate
가 안되면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를 찾아보고 읽어보고, 생활 코딩이나 유튜브 강의를 참고 해야 겠다.