본문 바로가기

Software 공부/Software Web Knowledge

[Software][Knowledge] Django (장고)

반응형

장고 (Django)

  - 파이썬으로 만들어진 오픈소스 웹어플리케이션 프레임워크

https://www.djangoproject.com/start/

 

Getting started with Django | Django

Django offers full support for translating text into different languages, plus locale-specific formatting of dates, times, numbers, and time zones. It lets developers and template authors specify which parts of their apps should be translated or formatted

www.djangoproject.com


장고 특징

장고장점

  - 파이썬 사용.

      * 언어의 진입장벽 낮은 편

      * 파이썬 기반 라이브러리(ex_머신러닝, 데이터분석)와 융합하여 사용하기 편함

  - 생산성↑. 개발비용↓

      * 프로젝트가 앱 단위로 구성.

      * 앱은 독립적인 환경으로 구성

      * 분업 용이 (앱 = 모델, 템플릿, 뷰 구성)

      * Admin을 이용한 빠른 구현

      * 반복적으로 구현해야하는 것 대부분 이미 만들어져 있다. (ex_로그인,회원가입, 인증 등)

  - URL 디자인 편리

      * 여러 과정을 거쳐 만들어야하는 url정의 후 사용해야하는 것을

         Django에 내장함수가 있어서 url에 포함된 정보 형식을 지정하여 정보에 맞게 url 시용 가능

  - 안정성과 검증, 커뮤니케이션, 자료

      * 성공 도입사례 (ex_Instagram)를 통해서 안정성, 기능이 검증

      * 출시된지 시간도 좀 지났고 커뮤니티활동도 활발, 문서도 많음

  - 개발환경의 유용

      * 아파치 등 웹 서버가 없어도 Test 가능

  - 자체 템플릿 시스템, 캐시 시스템, 다국어 지원, 소스 변경사항 자동 반영

 

장고단점

  - 파이썬 사용

      * 파이썬의 단점이 그대로 포함되어있다.

        (속도, 실행될때까지 걸리지 않는 에러 등)

  - 웹 프레임워크가 비교적 속도가 느림

  - 숙련도가 필요

      * Django 자체 + Python 언어

          ex_ORM 기반이기때문에 원하는 결과가 나오지 않으면 해결하기 위해서 노력을 해야한다.

  - 커스텀하기 어려움

      * 이미 만들어져잇는 것을 원하는 것으로 바꾸기 어려움

  - 한글화 문서 부족

      * (한국인 한정) 자료가 번역이 덜 되어있음

 

장고 기본 구조

  - MTV 패턴

     * MVC 디자인 패턴과 거의 비슷 

      * Model : Database 관련 Manage, 연결, 실행 등

      * Template : 실제 보여주는 화면 인터페이스. (화면의 표현 방식)

      * View : Model과 View를 연결해주는 Controller


장고 - 프로젝트(Project), 앱(App), 템플릿(Template)

Django Project

  - 하나의 웹 사이트로 이해

  - 여러개의 웹 페이지가 모인 웹 사이트 형태

Django App

  - 웹 사이트에서 기능을 가진 웹 페이지로 이해

  - 기본적으로 정의되어있는 앱(관리자, 인증 게시판 앱 등)

  - 개발자가 원하는 기능을 구현하는 앱

Django Template

  - MTV에서 나오는 Template와 같음

  - 실제 보여주는 화면을 정의

  - 앱별로 보여지는 여러개 생성 가능

  - 템플릿 사용이 장점이 되는 이유

     코드로 일일히 다 구성하는 것 보다 템플릿으로 가져와서 쓰는것이 더 좋음

 


장고 - 프로젝트(Project), 앱(App), 템플릿(Template) 파일 구성

전체 프로젝트 파일 구성

   Django_프로젝트(project)
   ├─ config
   │  ├─ __init__.py
   │  ├─ asgi.py
   │  ├─ settings.py
   │  ├─ urls.py
   │  └─ wsgi.py
   ├─ Django_앱(App)
   │     ├─ migrations
   │     │  └─ __init__.py
   │     ├─ Templates
   │     │  └─ 템플릿.html
   │     ├─ __init__.py
   │     ├─ admin.py
   │     ├─ apps.py
   │     ├─ models.py
   │     ├─ tests.py
   │     └─ views.py
   └─ manage.py

Django_Project 파일 구성

   Django_프로젝트(project)
   ├─ config
   │  ├─ __init__.py
   │  ├─ asgi.py
   │  ├─ settings.py
   │  ├─ urls.py
   │  └─ wsgi.py
   └─ manage.py

  - __init__.py

     * 

  - asgi.py

     * 

  - settings.py

     * 프로젝트의 설정에 관한파일

     * 프로젝트 안에 앱을 추가하면 추가해줘야 하는 부분

  - urls.py

     * 요청과 응답을 처리해주는 url 파일

     * url 선언을 저장하는 파일

  - wsgi.py

     * 

  - manage.py

     * 여러 방법으로 상호작용 하는 파일

Django_App 파일 구성

   Django_앱(App)
   ├─ migrations
   │  └─ __init__.py
   ├─ __init__.py
   ├─ admin.py
   ├─ apps.py
   ├─ models.py
   ├─ tests.py
   └─ views.py


  -  __init__.py

     * 
  - admin.py

     * 관리자 페이지 관련 파일
  - apps.py

     * 
  - models.py

     * DB와 연결할 수 잇게 ORM역할을 하는 파일
  - tests.py

     * 이름 그래도 Test를 위한 파일
  - views.py

     * 기능 구현을 위해 기능들을 정의해두는 파일

     * 템플릿.html 로 데이터를 전달 하거나

     * url을 통한 요청을 처리하거나

Django_템플릿

    Templates
    └─ 템플릿.html

  - 템플릿.html

      * 실제 보여주는 화면을 정의해둔 파일

      * view 컨트롤러 통해서 화면 출력


 

 

반응형