ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 🤖 Django 웹 프레임워크
    프로그래밍/Django & Flask 2020. 10. 24. 13:59
    반응형

    Django 웹 프레임워크


    📌 일반적인 특징

    MVC 패턴 기반 MTV - 장고에서는 View를 Template, Controller를 View라고 부른다.
    객체 관계 매핑(Object-Relational Mapping) - 데이터베이스 시스템과 데이터 모델을 연결시키는 다리와 같은 역할
    자동으로 구성되는 관리자 화면 - 장고는 웹 서버의 콘텐츠, 즉 데이터베이스에 대한 관리 기능을 위하여 프로젝트를 시작하는 시점에 기본 기능으로 관리자 화면을 제공
    우아한 URL 설계 - 파이썬 프레임워크의 일반적인 우아한 URL 방식을 채택
    자체 템플릿 시스템 - 내부적으로 확장이 가능하고 디자인이 쉬운 강력한 템플릿 시스템을 가지고 있다. 
    - 화면 디자인과 로직에 대한 코딩을 분리하여 독립적으로 개발 진행이 가능하다.
    캐시 시스템 -  캐시용 페이지를 메모리, 데이터베이스 내부, 파일 시스템 중 아무 곳에나 저장할 수 있다.
    - 캐시 단위를 페이지에서부터 사이트 전체 또는 특정 뷰의 결과, 템플릿의 일부 영역만을 지정하여 저장해 둘 수도 있다.
    다국어 지원 - 장고는 동일한 소스코드를 다른 나라에서도 사용할 수 있도록 텍스트의 번역, 날짜/시간/숫자의 포맷, 타임존의 지정 등과 같은 다국어 환경을 제공한다. 
    풍부한 개발 환경  
    소스 변경사항 자동 반영 - .py 파일의 변경 여부를 감시하고 있다가 변겨잉 되면 실행 파일에 변경 내역을 바로 반영해준다. 
    - 테스트용 웹 서버를 실행 중인 상태에서 소스 파일을 수정할 경우에도 웹 서버를 다시 시작할 필요 없이 자동으로 새로운 파일이 반영된다. 

     

    📌 Django 설치

    cmd 창에 다음과 같이 입력

    pip install Django

     

    📌 장고에서의 애플리케이션 개발 방식

    - 애플리케이션이란?

    웹 사이트를 설계할 때 가장 먼저 해야 할 일은 프로그램이 해야 할 일을 적당한 크기로 나누어 모듈화 하는 것

    이 경우, 웹 사이트의 전체 프로그램 또는 모듈화된 단위 프로그램을 애플리케이션이라고 한다.

     

    프로젝트: 웹 사이트에 대한 프로그램

    애플리케이션: 모듈화된 단위 프로그램 

     

    1) MTV 패턴

    - MVC 패턴이란?

    데이터(model), 사용자 인터페이스(view), 데이터를 처리하는 로직(controller)을 구분해서 설계하는 방식이다. 

     

    장고에서는 Model(데이터베이스에 저장되는 데이터), Template(사용자에게 보여지는 부분), View(실질적으로 프로그램 로직이 동작하여 데이터를 가져오고 적절하게 처리된 결과를 템플릿에 전달)

     

    출처: https://unifox.tistory.com/6

    • 클라이언트로부터 요청을 받으면 URLconf 모듈을 이용하여 URL 분석

    • URL 분석 결과를 통해 해당 URL에 대한 처리를 담당할 뷰를 결정

    • 뷰는 자신의 로직을 실행하면서, 만일 데이터베이스 처리가 필요하면 모델을 통해 처리하고 그 결과 반환

    • 뷰는 자신의 로직 처리가 끝나면 템플릿을 사용하여 클라이언트에 전송할 HTML 파일을 생성

    • 뷰는 최종결과로 HTML 파일을 클라이언트에게 보내 응답

    2) Model - 데이터베이스 설계

    - 모델이란?

    사용될 데이터에 대한 정의를 담고 있는 장고의 클래스

     

    하나의 모델 클래스는 하나의 테이블에 매핑되고, 모델 클래스의 속성은 테이블의 컬럼에 매핑된다. 

    데이터베이스에 대한 액세스를 SQL 없이도 클래스를 다루는 것처럼 할 수 있어서 편리하다.

    SQLite3, MySQL 등 데이터 베이스 엔진을 변경하더라도 ORM을 통한 API는 변경할 필요가 없기 때문에 필요에 따라 데이터베이스 엔진을 훨씬 쉽게 변경할 수 있다 .

    from django.db import models
    
    class Person(models.Model):
        first_name = models.CharField(max_length=30)
        last_name = models.CharField(max_length=30)

    위의 파이썬 코드는 밑의 SQL문과 같다.

    CREATE TABLE myapp_person( #테이블명은 애플리케이션명과 테이블 클래스명을 _로 연결
        "id" serial NOT NULL PRIMARY KEY, # primary key는 장고에서 자동으로 부여
        "first_name" varchar(30) NOT NULL,
        "last_name" varchar(30) NOT NULL
    );

     

    3) Template - 화면 UI 설계

    템플릿 파일은 *.html 확장자를 가지며, 장고의 템플릿 문법에 맞게 작성한다.

    중요한 것은 템플릿 파일을 적절한 디렉토리에 위치시켜야 한다는 것이다. 

    장고에서 템플릿 파일을 찾을 때는 TEMPLATE_DIRS 및 INSTALLED_APPS에서 지정된 디렉토리를 검색한다. (setting.py 파일에 정의되어 있다)

     

    4) URLconf - URL 설계

    URL을 정의하기 위해서는 urls.py 파일에 URL과 처리함수(뷰)를 매핑하는 파이썬 코드를 작성해주면 된다. 이러한 URL/뷰 매핑을 URLconf라고 한다.

    (정규표현식을 알아두면 좋다)

    # django 1 문법, 3에서는 코드를 바꿔줘야 한다. 
    from django.conf.urls import patters, url
    from . import views
    
    urlpatterns = patterns('',
        url(r'^articles/2003/$', views.special_case_2003),
        url(r'^articles/(\d{4})/$', views.year_archive),
        url(r'^articles/(\d{4})/(\d{2})/$', views.month_archive),
        url(r'^articles/(\d{4})/(\d{2})/(\d+)/$', views.artive_detail),
    )
    

     

    5) View 로직 설계

    뷰는 웹 요청을 받아서 데이터베이스 접속 등 해당 애플리케이션의 로직에 맞는 처리를 하고, 그 결과 데이터를 HTML로 변환하기 위하여 템플릿 처리를 한 후에, 최종 HTML로 된 응답 데이터를 웹 클라이언트로 반환하는 역할을 한다. 

    장고에서의 뷰는 함수 또는 클래스의 메소드로 작성되며, 웹 요청을 받고 응답을 반환해준다. 뷰는 보통 views.py 파일에 작성한다. 

    from django.http import HttpResponse
    import datetime
    
    def current_datetime(request): # 뷰함수는 httprequest 객체를 받는다. 
    	now = datetime.datetime.now()
        html = "<html><body>it is now %s. </body></html>" % now
        return HttpResponse(html) # 필요한 처리를 한 후에 httpresponse객체를 반환한다. 

    더보기

    출처: 장고로 배우는 쉽고 빠른 웹개발, 김석훈, 한빛미디어(2015)

    반응형

    댓글

Designed by Tistory.