바뀜
편집 요약 없음
책이나 강의는 초~중급 수준밖에 없어 일정 레벨 이상으로 올라가지 못한다. 중급 이상으로 올라가려면 어찌해야 할까..(장고만으론 중급 이상 오르지 못할듯;)
책이나 강의는 초~중급 수준밖에 없어 일정 레벨 이상으로 올라가지 못한다. 중급 이상으로 올라가려면 어찌해야 할까..(장고만으론 중급 이상 오르지 못할듯;)
==개발방식==
===애플리케이션 기반===
모듈화된 단위 프로그램을 애플리케이션이라고 한다. 한 번 개발하고 다른 프로젝트에서도 재사용할 수 있게 설계된 앱.
이 앱 안에 MVT가 들어있다.
===MVT패턴. '''MVT 프레임워크(Model View Template)'''===
Model은 DB에 저장되는 데이터, Template는 사용자에게 보여지는 UI, View는 실질적인 프로그램 조직을 의미하며, 데이터를 가공하여 모델과 템플릿을 연결한다.
1. 웹클라이언트의 요청을 받으면 URL을 분석하여 처리를 담당할 뷰를 정한다.
2. 뷰는 자신의 로직을 실행, DB처리가 필요하면 모델을 통해 처리 후 결과를 받는다.
3. 뷰의 처리가 끝나면 템플릿을 통해 클라이언트에 전송할 HTML을 생성, 보낸다.
====간단설명====
{| class="wikitable"
!MVT
!역할
|-
|Model
|데이터베이스에 엑세스.
|-
|View
|데이터를 갖고 변형.(실질적인 파이썬 코드가 작용하는 부분)
|-
|Template
|데이터를 사용자에게 보여준다.(HTML로 만든다.)
|}
{| class="wikitable"
|+
!
!
!
!
|-
|URL
|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
|응답을 하기 위해 상단에 from django.http import HttpResponse를 써주어야 한다.
- 함수로 뷰를 작성한 예.
def 함수명(request):
~~
return HttpResponse(객체명)
request를 받고, HttpResponse를 반환한다. 에러를 반환하고 싶다면 HttpResponseNotFound 등을 반환하면 된다.
일반적으로 템플릿에 보냈다가 이를 HttpResponse객체에 담아 클라이언트에게 응답한다.
(일반적으로 HttpResponse 대신 render함수를 사용한다. 직접 짜는 것보다 html파일을 이용하는 게 편하기 때문이다.)
|
|
|-
|Model
|하나의 모델은 하나의 테이블에 매핑된다. 모델의 속성은 컬럼에 매핑된다. 모델을 정의하면 primarykey는 장고에서 자동으로 부여한다.(직접 지정할 수도 있다.)
|
|
|-
|Template
|개발자가 작성한 html파일을 템플릿이라 한다.
템플릿의 경로는 settings.py의 TEMPLATE=[ 안에 정의되어 있다. 기본적으로 이 안에서 찾고, 이후에 INSPALLED_APPS에 등록된 앱의 template디렉토리를 찾는다.
|
|
|-
|
|
|
|
|}
=웹페이지 설계=
==프로젝트 뼈대 만들기==
1. 디렉토리 파일 구성
2. 실행파일 세팅
3. 테이블 설계, 생성
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 />
[[분류:장고]]
[[분류:장고]]