바뀜

둘러보기로 가기 검색하러 가기
4,401 바이트 추가됨 ,  2021년 4월 1일 (목) 13:46
편집 요약 없음
20번째 줄: 20번째 줄:     
책이나 강의는 초~중급 수준밖에 없어 일정 레벨 이상으로 올라가지 못한다. 중급 이상으로 올라가려면 어찌해야 할까..(장고만으론 중급 이상 오르지 못할듯;)
 
책이나 강의는 초~중급 수준밖에 없어 일정 레벨 이상으로 올라가지 못한다. 중급 이상으로 올라가려면 어찌해야 할까..(장고만으론 중급 이상 오르지 못할듯;)
 +
 +
==개발방식==
 +
 +
===애플리케이션 기반===
 +
모듈화된 단위 프로그램을 애플리케이션이라고 한다. 한 번 개발하고 다른 프로젝트에서도 재사용할 수 있게 설계된 앱.
 +
 +
이 앱 안에 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 />
 +
 +
 
[[분류:장고]]
 
[[분류:장고]]
익명 사용자

둘러보기 메뉴