본문 바로가기

개발공부/Python

Django 프레임워크 개념강의정리

생활코딩 Django 기초강의를 수강하며 정리한 내용이다.

 

Django 시작하기

가상환경 설치 밎 장고 설치


 

[Django] 01. 가상환경과 장고설치

가상환경 생성과 장고 설치에 관한 포스팅을 진행하겠습니다!가상환경이란 무엇일까요? 저희가 사용할 장고는 파이썬 기판 웹 프레임워크입니다.어려운말은 다 떼고 파이썬을 사용하기 때문에

velog.io

 


장고를 사용하려면 가상환경을 설치해서 실행해야 한다.

파이썬 가상환경 여는 법

cd chaein> cd Scripts > ./activate

가상환경 끄는 법

deactivate

장고 설치

pip install django

프로젝트 시작

django-admin startproject (프로젝트명) .

->프로젝트 시작할 수 있다. 프로젝트에 필요한 설정파일들이 생성된다.

구성 파일 설명

settings.py : 프로젝트를 운영하는 데에 필요한 여러가지 설정들이 들어있다.

urls : 사용자가 접속하는 path 에 따라서 요청을 어떻게 처리해 줄 것인가를 지정하는 (라우팅 지정) 아주 중요한 파일

manage.py : 여러가지 기능들이 들어있는 utility 파일. 이 파일을 통해 장고를 실행할 수 있다.

서버 열기

python3 manage.py runserver : 장고 서버를 열 수 있다.

서버 닫기

ctrl C 누르면 서버 끌 수 있다.

데이터베이스에 관리자 계정 생성하기

  1. DB생성하기
    python manage.py migrations
    python manage.py migrate
  2. 관리자 계정 생성하기

python manage.py createsuperuser

생성된 서버주소

127.0.0.1:8000/admin/

앱 = 특정한 기능을 수행하는 단위 모듈

모든 장고 프로젝트는 1개 이상의 앱으로 구성된다.

앱 생성

python manage.py startapp blog

settings.py에 앱 등록하기

모델

  1. 모델은 models모듈의 Model클래스를 확장해서 만든 파이썬 클래스이다.
  2. models.py 파일에 클래스 정의
  1. 데이터베이스에 모델 반영하기
  2. python manage.py makemigrations _앱의 마이그레이션 폴더에 파일 생성됨
  3. python manage.py migrate

.gitignore에 ./idea, migration/ db.sqlite3 을 작성해야한다! 버전관리 할 필요 없음 로컬에서 테스트할 때랑 실제 서비스할 때 충돌 발생할 수 있다.

html 파일 안에서
파이썬 함수에 해당하는 부분은 {% %}로 감싸고, 단순히 변수를 의미하는 곳은 {{ }}로 감싼다.


Port

컴퓨터에서 서버의 port와 통신하는 것을 listening 한다고 한다.

가끔 실행할 때 8000번 포트에 다른 서버가 실행되고 있을 수 있따. 그럴 땐 다른 서버를 끄고 개발 서버를 실행시키거나, 다른 포트에 개발 서버를 리스닝시키면 된다.

명령어 : python manage.py runserver 8888

App 만들기

실제로 어플리케이션을 app이라는 작은 단위를 만들어서 구현하게 된다. 프로젝트가 복잡해지면, 연관된 로직들을 모아 grouping 하고 싶을 때가 온다. 여러개의 앱들을 모아 정리정돈 하게 된다.

각각의 app 안에는 urls.py라는 파일이 존재한다.

app안에는 view라는 것을 만들고 그 안에 여러가지 함수를 만들어 구체적으로 프로그램 구현하게 됨.

사용자가 접속하면 각각의 경로를 누구에게 위임할 것인가를 urls.py 파일을 수정하여 코딩하게 된다. app 안에 있는 urls.py 파일에서도 앱 안의 어떤 함수로 위임할 것인가를 결정하게 된다.

데이터베이스에 직접 접속하지 않고, 장고 안의 model이라는 수단을 통해 데이터베이스를 사용하게 된다.

데이터베이스의 정보를 받아 클라이언트에게 응답을 하게 된다.


Routing

라우터는 클라이언트의 경로를 지정해준다. 사용자가 접속한 각각의 경로를 누가 처리할 것인가를 지정하는 것을 라우팅이라고 한다.

장고에서는 프로젝트폴더 안의 urls.py 가 가장 큰 틀의 라우팅을 하고, 적당한앱으로 위임을 해주면 app이 view 안에 있는 특정 함수로 위임을 해서 함수가 그 작업을 처리하게 된다.

  • project 파일 안의 urls.py : include를 import 하고, include 안에 이동할 myapp.urls를 작성
  • path(’’,include(’myapp.urls))
  • myapp 안의 urls.py 파일

myapp 안에도 urls.py 파일을 복사 붙여넣기 해야 한다.

create, read 등으로 들어갔을 때 어떤 경로로 라우팅 할 지 작성한다.

사용자가 home 으로 들어왔다 하면 path(’’)

사용자가 create 로 들어왔다 하면 path(’create/’)

사용자가 read/1로 들어왔다 하면 path(’read/1/’)

사용자가 경로를 지정하지 않고 접속했을 때, view.py 안의 함수로 위임하기 위해서는 pass 함수에 두번째 파라미터 값을 주어야 한다.

  • from myapp import views : myapp 패키지 안의 view 모듈을 임포트
  • path(’’,views.index)
  • views.py 파일

안에 클라이언트에게 정보를 전송하기 위한 함수를 정의한다.

  • 첫번째 파라미터 인자로 요청과 관련된 여러가지 정보가 들어오도록 약속되어있는 객체를 전달하도록 되어있음. 보통 request를 사용한다. 모든 요청 데이터는 view.py 안의 함수의 첫번째 인자로 들어간다!
  • 우리가 처리한 결과를 클라이언트로 보내줄 때 return 값으로 보내준다.
    • HttpResponse: http를 이용해서 응답을 하겠다는 의미 ex ) return HttpResponse(’Welcome!’)

URL에 있는 값을 가변적으로 하는 방법

  • path(’read//’) #<> 안의 값은 언제든지 바뀔 수 있다. 이름은 id이다.
  • read함수의 두번째 인자로 id를 주면 id를 return 할 수 있다.

Django 사용하는 이유 (생활코딩 6강)

Web Server는 만들어 둔 html 파일을 클라이언트에게 전송해준다. 성능이 매우 빠르다. 또한, 더 배울 것도 없다.

반면에 Web Application Server는 사용자가 접속할 때 요청하는 데이터를 DB 등에서 가져와 HTML 코드를 동적으로 생성하여 클라이언트에게 전송한다. 웹서버에 비해 굉장히 느리고, 배울 것도 많지만 유지보수하기 편리하고 개인화된 정보를 만들어주기도 편리하다!

만약 random 과 같은 동적인 함수를 사용하여 views.py를 수정하게 되면, 웹페이지의 html 문서가 로드될 때마다 바뀌는 것을 확인할 수 있다.