"1. 장고 개요"의 두 판 사이의 차이

Pywiki
둘러보기로 가기 검색하러 가기
 
(사용자 2명의 중간 판 14개는 보이지 않습니다)
1번째 줄: 1번째 줄:
 +
<youtube>https://www.youtube.com/watch?v=oB9lqmgDCmY&feature=youtu.be</youtube>
 +
 
==개요==
 
==개요==
웹페이지 작성을 위한 파이썬 프레임워크.
+
웹페이지 작성을 위한 파이썬 프레임워크. 백엔드를 담당한다.
  
 
파이썬 유저에게 있어 결과물을 손쉽게 보여주거나 공유하는 도구가 되기도 해, 기본적인 사용법은 알고 있어야 한다.
 
파이썬 유저에게 있어 결과물을 손쉽게 보여주거나 공유하는 도구가 되기도 해, 기본적인 사용법은 알고 있어야 한다.
  
 
+
풀스택프레임워크로 기본적인 기능이 다 들어와 있다.(필요치 않은 기능까지도.) 덕분에 빠르고 초보자도 여러가지 신경쓰지 않고 개발이 가능하다.
장고를 설치하기 전에 가상환경을 만들고, 그 안에 설치하도록 하자.
+
==학습매체==
 
 
그 안에서 pip install django 를 입력하면 설치를 진행한다.
 
==학습==
 
 
뷰와 탬플릿, url을 동시에 고려해야 하는 등 다양한 개념들이 복합적으로 엮여 작용하기 때문에 순차적으로 익힌다 한들 종합하기 어렵다. 때문에 처음엔 강의로 기초개념을 잡은 후 서적과 블로깅을 권한다.
 
뷰와 탬플릿, url을 동시에 고려해야 하는 등 다양한 개념들이 복합적으로 엮여 작용하기 때문에 순차적으로 익힌다 한들 종합하기 어렵다. 때문에 처음엔 강의로 기초개념을 잡은 후 서적과 블로깅을 권한다.
  
21번째 줄: 20번째 줄:
 
책이나 강의는 초~중급 수준밖에 없어 일정 레벨 이상으로 올라가지 못한다. 중급 이상으로 올라가려면 어찌해야 할까..(장고만으론 중급 이상 오르지 못할듯;)
 
책이나 강의는 초~중급 수준밖에 없어 일정 레벨 이상으로 올라가지 못한다. 중급 이상으로 올라가려면 어찌해야 할까..(장고만으론 중급 이상 오르지 못할듯;)
  
==개발방식==
+
=개발방식=
  
 
===애플리케이션 기반===
 
===애플리케이션 기반===
28번째 줄: 27번째 줄:
 
이 앱 안에 MVT가 들어있다.
 
이 앱 안에 MVT가 들어있다.
  
===MVT패턴. '''MVT 프레임워크(Model View Template)'''===
+
===MVT패턴. MVT 프레임워크(Model View Template)===
Model은 DB에 저장되는 데이터, Template는 사용자에게 보여지는 UI, View는 실질적인 프로그램 조직을 의미하며, 데이터를 가공하여 모델과 템플릿을 연결한다.
+
Model은 DB에 저장되는 데이터, View는 실질적인 조작을 다루며, 데이터를 가공하여 모델과 템플릿을 연결한다. Template은 사용자에게 보여지는 UI.
 
 
1. 웹클라이언트의 요청을 받으면 URL을 분석하여 처리를 담당할 뷰를 정한다.
 
 
 
2. 뷰는 자신의 로직을 실행, DB처리가 필요하면 모델을 통해 처리 후 결과를 받는다.
 
 
 
3. 뷰의 처리가 끝나면 템플릿을 통해 클라이언트에 전송할 HTML을 생성, 보낸다.
 
  
 
====간단설명====
 
====간단설명====
 
{| class="wikitable"
 
{| class="wikitable"
 +
|-
 
!MVT
 
!MVT
 
!역할
 
!역할
44번째 줄: 38번째 줄:
 
|Model
 
|Model
 
|데이터베이스에 엑세스.
 
|데이터베이스에 엑세스.
 +
하나의 모델은 하나의 테이블에 매핑된다. 모델의 속성은 컬럼에 매핑된다. 모델을 정의하면 primarykey는 장고에서 자동으로 부여한다.(직접 지정할 수도 있다.)
 
|-
 
|-
 
|View
 
|View
49번째 줄: 44번째 줄:
 
|-
 
|-
 
|Template
 
|Template
|데이터를 사용자에게 보여준다.(HTML로 만든다.)
+
|데이터를 사용자에게 보여준다.(HTML로 만든다.) 개발자가 작성한 html파일을 템플릿이라 한다.
 
|}
 
|}
 +
 +
== 작동방식 ==
 +
 +
# 웹클라이언트의 요청을 받으면 URL을 분석하여 처리를 담당할 뷰를 정한다.
 +
# 뷰는 자신의 로직을 실행, DB처리가 필요하면 모델을 통해 처리 후 결과를 받는다.
 +
# 기본적인 연산이 끝나면 템플릿을 불러와 클라이언트에 전송할 HTML을 생성, 보낸다.
 +
 
{| class="wikitable"
 
{| class="wikitable"
|+
+
!순서
!
+
!설명
!
 
!
 
!
 
 
|-
 
|-
 
|URL
 
|URL
 
|urls.py에서 뷰를 매핑하는 함수를 작성한다.
 
|urls.py에서 뷰를 매핑하는 함수를 작성한다.
 
*setting.py의 ROOT_URLCONF 항목을 읽어 urls.py를 불러오고, urlpatterns변수에 지정된 패턴을 찾아 대응시킨다.
 
*여기에 해당하는 view를 불러온다.
 
*매핑할 때 추출한 단어들을 뷰에 인자로 넘겨준다.
 
 
(주소창에 ~주소~/<int:변수명>/<타입:변수명> 형태로 인자를 전달한다. 각 타입에 대해선 p99에 목록이 있음.)
 
 
(정규표현식을 사용해서 URL패턴을 작성할 수도 있다. <int:year> 대신 (?P<year>[0-9]{4}) 개인적으로 앞이 훨씬 직관적이고 편한데? p100에 간단한 정규표현식 설명이 있다.)
 
 
(정규표현식을 쓸 때엔 path()대신 re_path()함수를 사용한다.
 
 
- 매칭되는 패턴이 없다면 에러를 처리하는 뷰를 호출한다.
 
|
 
|
 
 
|-
 
|-
 
|View
 
|View
|응답을 하기 위해 상단에 from django.http import HttpResponse를 써주어야 한다.
+
|요청을 받으면 데이터를 갖고 변형.(실질적인 파이썬 코드가 작용하는 부분)
- 함수로 뷰를 작성한 예.
+
미리 짜여진 탬플릿을 가져다 데이터를 배치하고 return 한다.
 
 
def 함수명(request):
 
 
 
    ~~
 
 
 
    return HttpResponse(객체명)
 
 
 
request를 받고, HttpResponse를 반환한다. 에러를 반환하고 싶다면 HttpResponseNotFound 등을 반환하면 된다.
 
 
 
일반적으로 템플릿에 보냈다가 이를 HttpResponse객체에 담아 클라이언트에게 응답한다.
 
 
 
(일반적으로 HttpResponse 대신 render함수를 사용한다. 직접 짜는 것보다 html파일을 이용하는 게 편하기 때문이다.)
 
|
 
|
 
|-
 
|Model
 
|하나의 모델은 하나의 테이블에 매핑된다. 모델의 속성은 컬럼에 매핑된다. 모델을 정의하면 primarykey는 장고에서 자동으로 부여한다.(직접 지정할 수도 있다.)
 
|
 
|
 
 
|-
 
|-
 
|Template
 
|Template
|개발자가 작성한 html파일을 템플릿이라 한다.
+
|데이터를 사용자에게 보여준다.(HTML로 만든다.) 개발자가 작성한 html파일을 템플릿이라 한다.
템플릿의 경로는 settings.py의 TEMPLATE=[ 안에 정의되어 있다. 기본적으로 이 안에서 찾고, 이후에 INSPALLED_APPS에 등록된 앱의 template디렉토리를 찾는다.
 
|
 
|
 
 
|-
 
|-
|
+
|Model
|
+
|(부록)필요한 경우에 데이터베이스에 엑세스.
|
+
하나의 모델은 하나의 테이블에 매핑된다. 모델의 속성은 컬럼에 매핑된다. 모델을 정의하면 primarykey는 장고에서 자동으로 부여한다.(직접 지정할 수도 있다.)
|
 
 
|}
 
|}
  
113번째 줄: 75번째 줄:
  
 
==프로젝트 뼈대 만들기==
 
==프로젝트 뼈대 만들기==
1. 디렉토리 파일 구성
+
# 디렉토리 파일 구성(애플리케이션 구조 설계)
 
+
#:회원가입기능, 게시판 기능, 결제기능 등을 어떻게 연결되게 할 것인가.
2. 실행파일 세팅
+
# 작동방식 설계
 
+
# 테이블 설계, 생성
3. 테이블 설계, 생성
+
# 슈퍼유저 생성
 
+
[[분류:1. 장고 기초]]
4. 슈퍼유저 생성
 
 
 
파이썬에선 __init__.py 파일이 있는 디렉토리를 패키지라 인식한다.
 
 
 
<br />
 
 
 
=프로젝트 만들기=
 
 
 
===장고 설치===
 
<code>python -m pip install --upgrade pip</code> 으로 pip를 업그레이드 해준 후, <code>pip install django</code>로 설치한다.
 
 
 
===프로젝트 만들기===
 
장고는 프로젝트 안에 여러 개의 앱으로 구성되는 구조이다.
 
 
 
가상환경을 사용한다면 그 이후에 진행하자.
 
{| class="wikitable"
 
|+
 
!과정
 
!방법
 
!비고
 
|-
 
|프로젝트 생성
 
|django-admin startproject config .
 
|프로젝트 디렉터리가 될 곳 안에서 실행('.'은 현재 위치라는 의미.)
 
config 말고 다른 이름도 가능하지만, 추후에 바꾸기 어렵기 때문에 일반적으로 사용하는 config를 권장한다.
 
|-
 
|DB생성
 
|python manage.py migrate
 
|DB변경사항을 반영하라는 명령이다.
 
|-
 
|서버작동
 
|python manage.py runserver
 
|서버를 돌린 후 <nowiki>http://localhost:8000</nowiki> 으로 들어가 작동이 되는지 확인해본다.
 
이게 된다면 기본적인 작동에 대한 문제는 없다.
 
|}
 
 
 
<br />
 
 
 
 
 
[[분류:장고]]
 

2021년 5월 31일 (월) 15:04 기준 최신판

1 개요[편집 | 원본 편집]

웹페이지 작성을 위한 파이썬 프레임워크. 백엔드를 담당한다.

파이썬 유저에게 있어 결과물을 손쉽게 보여주거나 공유하는 도구가 되기도 해, 기본적인 사용법은 알고 있어야 한다.

풀스택프레임워크로 기본적인 기능이 다 들어와 있다.(필요치 않은 기능까지도.) 덕분에 빠르고 초보자도 여러가지 신경쓰지 않고 개발이 가능하다.

2 학습매체[편집 | 원본 편집]

뷰와 탬플릿, url을 동시에 고려해야 하는 등 다양한 개념들이 복합적으로 엮여 작용하기 때문에 순차적으로 익힌다 한들 종합하기 어렵다. 때문에 처음엔 강의로 기초개념을 잡은 후 서적과 블로깅을 권한다.

장고 공식 문서

장고 공식 커뮤니티

점프 투 장고 : https://wikidocs.net/book/4223

어차피 한 강의를 한 번에 소화하는 건 불가능한 일. 하지만, 일정 수준에 올라 다시 강의를 보는 것은 낭비.. 하여, 최대한 낭비가 없게끔, 초급자를 벗어나도 다시금 참고할 수 있는 매체를 만들어보고자 한다.

책이나 강의는 초~중급 수준밖에 없어 일정 레벨 이상으로 올라가지 못한다. 중급 이상으로 올라가려면 어찌해야 할까..(장고만으론 중급 이상 오르지 못할듯;)

3 개발방식[편집 | 원본 편집]

3.1 애플리케이션 기반[편집 | 원본 편집]

모듈화된 단위 프로그램을 애플리케이션이라고 한다. 한 번 개발하고 다른 프로젝트에서도 재사용할 수 있게 설계된 앱.

이 앱 안에 MVT가 들어있다.

3.2 MVT패턴. MVT 프레임워크(Model View Template)[편집 | 원본 편집]

Model은 DB에 저장되는 데이터, View는 실질적인 조작을 다루며, 데이터를 가공하여 모델과 템플릿을 연결한다. Template은 사용자에게 보여지는 UI.

3.2.1 간단설명[편집 | 원본 편집]

MVT 역할
Model 데이터베이스에 엑세스.

하나의 모델은 하나의 테이블에 매핑된다. 모델의 속성은 컬럼에 매핑된다. 모델을 정의하면 primarykey는 장고에서 자동으로 부여한다.(직접 지정할 수도 있다.)

View 데이터를 갖고 변형.(실질적인 파이썬 코드가 작용하는 부분)
Template 데이터를 사용자에게 보여준다.(HTML로 만든다.) 개발자가 작성한 html파일을 템플릿이라 한다.

3.3 작동방식[편집 | 원본 편집]

  1. 웹클라이언트의 요청을 받으면 URL을 분석하여 처리를 담당할 뷰를 정한다.
  2. 뷰는 자신의 로직을 실행, DB처리가 필요하면 모델을 통해 처리 후 결과를 받는다.
  3. 기본적인 연산이 끝나면 템플릿을 불러와 클라이언트에 전송할 HTML을 생성, 보낸다.
순서 설명
URL urls.py에서 뷰를 매핑하는 함수를 작성한다.
View 요청을 받으면 데이터를 갖고 변형.(실질적인 파이썬 코드가 작용하는 부분)

미리 짜여진 탬플릿을 가져다 데이터를 배치하고 return 한다.

Template 데이터를 사용자에게 보여준다.(HTML로 만든다.) 개발자가 작성한 html파일을 템플릿이라 한다.
Model (부록)필요한 경우에 데이터베이스에 엑세스.

하나의 모델은 하나의 테이블에 매핑된다. 모델의 속성은 컬럼에 매핑된다. 모델을 정의하면 primarykey는 장고에서 자동으로 부여한다.(직접 지정할 수도 있다.)

4 웹페이지 설계[편집 | 원본 편집]

4.1 프로젝트 뼈대 만들기[편집 | 원본 편집]

  1. 디렉토리 파일 구성(애플리케이션 구조 설계)
    회원가입기능, 게시판 기능, 결제기능 등을 어떻게 연결되게 할 것인가.
  2. 작동방식 설계
  3. 테이블 설계, 생성
  4. 슈퍼유저 생성