본문 바로가기
서버 공부

Django 기본 개념 정리

by 마루청 2021. 4. 7.
728x90

이 사이트의 인강을 정리한 글.

www.inflearn.com/course/django-%EC%B4%88%EB%B3%B4-%EA%B0%80%EC%9D%B4%EB%93%9C-%EC%8B%A4%EC%8A%B5%EC%9D%84-%ED%86%B5%ED%95%B4-%EC%95%8C%EC%95%84%EB%B3%B4%EB%8A%94-%EC%9E%A5%EA%B3%A0-%EC%9E%85%EB%AC%B8#

 

 

 

Intro

 

  • MVC & MTV(Django) (거의 동일)

Model : data. database에 저장된 data 그걸 다룸

View : model에 있는 data를 적절하게 보여줌

Control/Template : 사용자의 입력이나 이벤트에 반응하여 Model와 View를 바꿈

 

 

서버 동작 방식

 

 

 

서버의 동작 방식

 

유저가 Web browser에서 이벤트를 발생.(ex : URL 클릭)

-> URL Dispatcher 에서 URL 분석. 적합한 View로 보내준다. 필요한 data는 Model에 요청.

-> Model에서 data를 가져와 View에서 보여줌. 이 때 보여줄 View를 Template로 만들어 보내주면 다시 Web Browser에서 그 결과를 보여준다. template : Html 파일 (control과 관련된 스크립트 파일)

 

이 때 View에서 사용자 요청(Response)에 따라 database에 입력을 할지 혹은 database의 정보를 가져올지 정한다.

Response의 종류로는 POST, GET 등이 있다.

 

POST : 사용자에게 데이터를 새로 입력받는다.

GET : 사용자에게 데이터를 제공한다.

 

장고의 장점은 SQL 쿼리를 작성할 필요 없다. 그것을 관리하는 Manager가 있고 그것을 가져와 Model에서 가공하면 됨.

의미있는 기능을 app으로 나누어 파일을 만듬 (나중에 다시 app을 사용할 수 있도록)

 

 

 

Django 프로젝트 생성 및 기본 명령어

 

장고 설치 : pip install django

 

프로젝트 생성 : django-admin startproject 프로젝트명

앱 생성 : ./manage.py startapp 앱명

-> 앱 생성시 settings.py 에 installed_apps 에 이름을 등록해줘야 한다. 이름 끝에 , 꼭 붙이기.

데이터베이스 생성 : ./manage.py migrate -> db가 생김

superuser 생성 : ./manage.py createsuperuser 

계정을 만들 수 있음 superuser로는 User나 데이터베이스 관리를 할 수 있다.

서버 실행 : ./manage.py runserver 포트숫자 (종료 : Ctrl+C) 포트 번호가 없을 시 기본 8000으로 실행된다.

 

* window에서는 ./manage.py 가 아니라 python manage.py 를 사용한다.

 

 

 

Django의 주요 파일의 역할

 

settings.py : 프로젝트 환경 설정 파일 ex) 디버그 모드 databases 연결 설정, app 목록 등

urls.py : 외부에서 유저가 접근하는 URL 모음 그 URL엔 각각의 page가 붙는다.

admin.py : 관리자용 파일

manage.py : 프로젝트 관리 명령어 

주요 명령어 : 

 

model.py : model에 필요한 class를 생성 (ex 게시물) 다양한 field에 따라 사용할 수 있음.

./manage.py migrate : app 에 있는 모델에 대한 database table이 적용된다.

 

 

 

  • 이후 웹페이지 작성 작업

사용자가 어느 웹페이지에서 Request를 보낼 때 그 Request를 인자로 받는 함수를 만든다.

인자로 들어온 것을 render 해서 write.html 로 보내기. (template 안에 만들면 됨) (or return 한다. return은 아마 Response 값만 나타낼 때 쓸 것 같고 template을 쓰려면 아마 render를 사용해야 할듯? 그 html로 해당 페이지를 꾸밀 수 있겠지)

write.html 작성. html 작성은 maru20564.tistory.com/3 참고.

 

model을 이용해 form을 만들어 입력 받을 때 모델에 있는 field를 인자로 전달하여 새로운 db data를 쉽게 만들 수 있도록 할 수 있다. view에 있는 write 함수에 form 객체를 생성해서 write.html에 form을 인자로 전달하면 더 쉽게 만들 수 있다. {{ form.as_p }}

 

게시글을 작성할 때 저장하기 버튼을 누르면 POST가 발생한다. POST가 발생할 때 form을 save 해서 데이터베이스에 넘긴다. 이 때 csrf_token을 전달하도록 html 파일에 코드 추가.

 

저장한 글을 만드는 list도 마찬가지로 url 생성 view 생성 html 생성

이 때 데이터베이스에서 가져와야하니까 article 에 있는 데이터를 전부 가져올 수 있다.

view에서 작성했던 글을 볼 수 있도록 한다. view는 작성된 글에 따라 숫자가 늘어나게 url로 만든다.

그리고 이 url들을 각 list에서 연결 가능하도록 링크를 달아준다.

728x90

댓글