장고 프레임 워크

이 장에서는 Django Framework에 대해 자세히 설명합니다.

Django는 웹 애플리케이션을 빌드하는 데 사용되는 MVT 웹 프레임 워크입니다. 거대한 Django 웹 프레임 워크에는 많은 "배터리 포함"이 함께 제공되므로 개발자는 모든 것이 어떻게 함께 작동하는지에 대해 놀라게됩니다. 배터리를 너무 많이 추가하는 원리는 후자를 별도의 라이브러리로 추가하는 대신 프레임 워크 자체에 공통 웹 기능을 포함하는 것입니다.

Django 프레임 워크가 인기를 얻은 주된 이유 중 하나는 거대한 Django 커뮤니티입니다. 커뮤니티가 너무 커서 모든 구석의 개발자가 인증, 권한 부여, 본격적인 Django 기반 CMS 시스템, 전자 상거래 추가 기능 등을 포함한 타사 패키지를 개발 한 별도의 웹 사이트가 여기에 전념했습니다. 당신이 개발하려는 것이 이미 누군가에 의해 개발되었고 당신의 프로젝트로 가져 오기만하면 될 가능성이 높습니다.

Django를 사용해야하는 이유는 무엇입니까?

Django는 개발자가 웹 사이트를 빠르고 깨끗하며 실용적인 디자인으로 개발하도록 장려하는 방식으로 설계되었습니다. Django의 실용적인 접근 방식은 군중에서 눈에 띄는 부분입니다.

소셜 미디어 웹 사이트와 같이 고도로 사용자 정의 가능한 앱을 구축 할 계획이라면 Django는 고려할 최고의 프레임 워크 중 하나입니다. Django의 강점은 사용자 간의 상호 작용 또는 다양한 유형의 미디어를 공유하는 능력에 있습니다. django의 가장 큰 장점 중 하나는 애플리케이션에서 플러그인을 사용할 준비가 된 고도로 사용자 정의 가능한 타사를 제공하는 대규모 커뮤니티 기반 지원을 활용할 수 있다는 것입니다.

다음은 웹 개발을 위해 Django를 선택해야하는 10 가지 이유입니다.

파이썬

Python은 간단한 언어 구조, 흐름 구조 및 쉬운 구문으로 인해 배우기 가장 쉬운 프로그래밍 언어 중 하나입니다. 다목적이며 많은 장치에 포함 된 웹 사이트, 데스크톱 응용 프로그램 및 모바일 응용 프로그램을 실행하며 다른 응용 프로그램에서 널리 사용되는 스크립팅 언어로 사용됩니다.

배터리 포함

Django는 URL 라우팅, 인증, 객체 관계형 매퍼 (ORM), 템플릿 시스템 및 db-schema 마이그레이션과 같은 공통 기능을 구축하는 데 필수적인 공통 라이브러리와 함께 제공됩니다.

기본 제공 관리자

Django에는 모델, 사용자 / 그룹 권한을 처리하고 사용자를 관리 할 수있는 내장 관리 인터페이스가 있습니다. 모델 인터페이스를 사용하면 고급 데이터베이스 기능을 제외한 모든 기능에 대해 별도의 데이터베이스 관리 프로그램이 필요하지 않습니다.

당신의 방식을 방해하지 않습니다

Django 애플리케이션을 만들면 상용구와 불필요한 기능이 추가되지 않습니다. 필수 가져 오기, 타사 라이브러리 및 XML 구성 파일이 없습니다.

확장 가능

Django는 MVC 디자인 패턴을 기반으로합니다. 이는 db (데이터베이스), 백엔드 및 프런트 엔드 코드와 같은 모든 엔티티가 개별 엔티티임을 의미합니다. Django를 사용하면 사이트를 구성하는 그림, 파일, CSS 및 JavaScript를 포함한 정적 미디어에서 코드를 분리 할 수 ​​있습니다.

Django는 웹 서버, 캐싱, 성능 관리, 클러스터링 및 균형 조정을위한 타사 라이브러리의 전체 목록을 지원합니다. Django가 제공하는 장점 중 하나는 ReST 및 OAuth와 같은 주요 이메일 및 메시징 애플리케이션과 서비스에 대한 지원입니다.

전투 테스트

Django는 2005 년에 처음 오픈 소스되었습니다. 12 년의 성장 이후 Django는 이제 뉴스 게시 웹 사이트를 운영 할뿐만 아니라 Pinterest, Instagram, Disqus, Bitbucket, EventBrite 및 Zapier와 같은 주요 글로벌 기업의 전체 또는 일부를 운영하고 있습니다. 이를 통해 강력하고 안정적인 웹 프레임 워크를 사용할 수 있습니다.

거대한 패키지 지원

대규모 커뮤니티 지원과 대규모 개발자 네트워크로 인해 원하는 작업이 이전에 수행되었을 가능성이 높습니다. 대규모 국제 개발자 커뮤니티는 프로젝트를 오픈 소스 패키지로 출시하여 커뮤니티에 기여합니다.

이러한 프로젝트의 저장소 중 하나는 Django 패키지 사이트입니다. 현재 Django 패키지에는 3400 개 이상의 Django 프로젝트에 사용할 재사용 가능한 Django 앱, 사이트 및 도구가 나열되어 있습니다.

적극적으로 개발

오픈 소스 프로젝트와 관련된 가장 큰 위험 중 하나는 지속 가능성입니다. 그것이 오래 지속되는지 우리는 확신 할 수 없습니다.

Django는 12 년이 되었기 때문에 그러한 위험이 없습니다. 일관된 릴리스, 새롭고 더 나은 버전 및 활발한 커뮤니티는 매일 코드 기반을 유지하고 개선하는 자발적인 기여자로 구성된 대규모 핵심 팀과 함께 매일 성장하고 있습니다.

안정적인 릴리스

Django와 같은 오픈 소스 소프트웨어 프로젝트는 많은 개발자가 매일 개발하고 테스트하기 때문에 경쟁 독점 소프트웨어보다 적극적으로 개발되고 더 안전합니다. 그러나 오픈 소스 소프트웨어 프로젝트의 단점은 상업적으로 실행 가능한 개발을위한 안정적인 코드베이스가 없다는 것입니다.

Django에는 아래 이미지와 같이 소프트웨어의 장기 지원 (LTS) 버전과 정의 된 릴리스 프로세스가 있습니다.

퍼스트 클래스 문서

첫 번째 릴리스부터 Django 개발자는 적절하고 포괄적 인 문서를 사용할 수 있어야하며 튜토리얼을 쉽게 이해할 수 있도록했습니다.

누가 Django를 사용하고 있습니까?

Django의 고유 한 강점으로 인해 Django 프레임 워크 위에 Python으로 빌드 된 여러 인기 웹 사이트가 있습니다. 아래는 Django를 기반으로 전체 또는 부분적으로 구축 된 주요 사이트 중 일부입니다.

Disqus

전 세계적으로 가장 선호되는 블로그 댓글 호스팅 사이트 중 하나입니다. Disqus를 통해 WordPress와 같은 가장 많이 사용되는 CMS (콘텐츠 관리 시스템)와 쉽게 통합 할 수 있습니다. 5 천만 명 이상의 사용자 기반을 관리하는 Django는 사이트 소유자가 커뮤니티에 도달하도록 만족시킬 수 있습니다.

양파

Onion 웹 사이트는 풍자적 인 신문의 온라인 장소를 제공하는 Django는이를위한 프레임 워크를 제공합니다.

Bitbucket

Bitbucket은 버전 관리 저장소 호스팅 서비스 인 GitHub와 같습니다. Bitbucket과 GitHub의 유일한 차이점은 Bitbucket은 mercurial 저장소를 호스팅하는 반면 GitHub는 git 저장소를 호스팅한다는 것입니다. 수백만 명의 사용자가 Bitbucket과 연결되어 있고 bitbucket이 제공하는 모든 서비스 (예 : 저장소 생성, 코드 푸시, 공동 작업자 추가, 커밋, 풀 요청 등)가 안정적이어야합니다. Django는 bitbucket 사이트를 운영합니다.

인스 타 그램

Instagram은 모든 친구에게 사진과 동영상을 공유하는 것을 좋아하는 사람들을 위해 특별히 제작 된 소셜 네트워킹 앱입니다. 현재 인스 타 그램에는 많은 유명인들이 팬들에게 더 가까이 다가 가고 있습니다. Django 프레임 워크도 Instagram을 실행하고 있습니다.

모질라 파이어 폭스

Google 크롬 다음으로 세계에서 두 번째로 널리 사용되는 브라우저는 Mozilla 브라우저입니다. 이제 Mozilla의 도움말 페이지가 Django 프레임 워크로 빌드되었습니다.

핀터 레스트

전 세계 수백만 명의 사용자가 Pinterest에서 새로운 아이디어와 영감을 발견합니다. Pinterest는 Django 프레임 워크 (요구 사항에 따라 수정 완료)를 사용하여 실행합니다.

NASA

미국 항공 우주국의 공식 웹 사이트는 수백만 명의 사용자가 초연 기관에서 제공하는 뉴스, 이미지, 비디오 및 팟 캐스트를 방문하고 확인할 수있는 곳입니다. Django는 공식 NASA 웹 사이트의 특정 부분을 개발합니다.

워싱턴 포스트

세계에 영향력있는 신문이 하나 있다면 워싱턴 포스트 일 것입니다. Washington Post의 웹 사이트는 일간지와 함께 제공되는 매우 인기있는 온라인 뉴스 소스입니다. 엄청난 양의 조회수와 트래픽이 Django 웹 프레임 워크에서 쉽게 처리되었습니다.

레딧 선물

매우 인기있는 Reddit 웹 사이트는 Reddit Gifts라는 익명의 온라인 선물 교환 및 밋업 플랫폼을 시작했습니다. 이 사이트는 전 세계 사용자를 연결하고 이들 간의 선물 교환을 용이하게합니다. Django 웹 프레임 워크는 기능을 강화합니다.

프레지

Prezi는 Django 프레임 워크에 구축 된 Microsoft PowerPoint의 클라우드 기반 대안입니다. 이 사이트는 조작하고 확대 및 축소 할 수있는 가상 캔버스를 제공합니다. 이것은 개별 슬라이드가 아닌 프레젠테이션의 전체보기를 제공합니다.

Django 프로젝트 및 앱 설치 및 만들기

Django를 설치하기 전에 Python이 설치되어 있는지 확인해야합니다. virtualenv를 사용한다고 가정하면 간단한 pip 설치 django로 충분합니다.

가상 환경 및 Django 설치

다음은 Windows 환경에 가상 환경과 Django를 설치하는 프로세스입니다.

Django가 제대로 설치되었는지 확인하려면 아래에 주어진 코드를 입력하십시오.

Django 프로젝트 생성

설치가 완료되면 Django 프로젝트를 만들어야합니다.

Windows 컴퓨터에서 아래 명령을 실행하면 다음과 같은 django 프로젝트가 생성됩니다.

django-admin startproject my_project_name

dir을 입력하면 위에 표시된 것처럼 하나의 새 파일과 하나의 새 디렉토리가 표시됩니다.

manage.py− manage.py는 django-admin을 둘러싼 래퍼 인 명령 줄 실행 가능한 Python 파일입니다. 이름에 내포 된 프로젝트를 관리하는데도 도움이됩니다.

이를 통해 다음과 같은 디렉토리를 생성했습니다. myFirstDjangoProject프로젝트의 구성 루트를 나타내는 myFirstDjangoProject 내부. 더 깊이 탐구 해 보겠습니다.

Django 구성

myFirstDjangoProject 디렉토리 "configuration root"를 호출하면이 디렉토리가 일반적으로 Django 프로젝트를 구성하는 데 필요한 파일을 보유하고 있음을 의미합니다. 이 디렉토리 외부의 거의 모든 것은 프로젝트의 모델,보기, 경로 등과 관련된 "비즈니스 논리"에만 초점을 맞출 것입니다. 프로젝트를 함께 연결하는 모든 지점이 여기로 이어질 것입니다.

  • __init__.py-이것은 비어 있으며 디렉토리를 가져 오기 가능한 Python 패키지로 변경합니다.

  • settings.py-이름에서 알 수 있듯이 대부분의 구성 항목이 설정되는 곳입니다.

  • urls.py-URL은 urls.py로 설정됩니다. 이를 통해이 파일에 프로젝트의 모든 URL을 명시 적으로 작성할 필요가 없습니다. 그러나 URL이 선언 된 위치를 Django에 알려야합니다 (즉, urls.py에서 다른 URL을 연결해야 함).

  • Wsgi.py-이것은 프로덕션에서 응용 프로그램을 돕기위한 것이며 일부 "앱"개체를 노출하는 Flask, Tornado, Pyramid와 같은 다른 응용 프로그램과 유사합니다.

설정하기

settings.py 내부를 살펴보면 상당한 크기를 알 수 있으며 이는 기본값 일뿐입니다. 주의해야 할 다른 사항은 정적 파일, 데이터베이스, 미디어 파일, 클라우드 통합 또는 Django 프로젝트를 구성 할 수있는 기타 수십 가지 방법입니다. settings.py 파일에 언급 된 몇 가지 사항을 이해해 봅시다.

  • BASE_DIR− 파일을 찾는 데 유용합니다. setting.py 파일 내에서 BASE_DIR 매개 변수는 기본 디렉토리의 절대 경로를 설정합니다.

  • SECRET_KEY− 해시를 만드는 데 사용됩니다. 일반적으로 쿠키, 세션, csrf 보호 및 인증 토큰에 secret_key를 사용했습니다.

  • DEBUG − 개발 또는 프로덕션 모드에서 실행되는 프로젝트로 설정할 수 있습니다.

  • ALLOWED_HOSTS− 당사는 애플리케이션이 제공되는 호스트 이름 목록을 제공합니다. 개발 모드에서 설정하는 것은 선택 사항입니다. 그러나 프로덕션 머신에서는 Django 프로젝트를 설정해야합니다.

  • INSTALLED_APPS− 현재 Django 프로젝트에 설치되어 실행중인 Django "앱"목록입니다. 내장 Django는 다음과 같이 6 개의 설치된 앱을 제공합니다.

    • 'django.contrib.admin'

    • 'django.contrib.auth'

    • django.contrib.

    • django.contrib.sessions

    • django.contrib.messages

    • django.contrib.staticfiles

  • MIDDLEWARE− Django 프로젝트를 실행하는 데 도움이됩니다. django 요청 / 응답 처리에 연결되는 파이썬 클래스입니다.

  • TEMPLATES− 문서가 프런트 엔드에 표시되는 방식을 정의합니다. Django 템플릿은 모든 텍스트 기반 형식을 생성하는 데 사용됩니다.

  • WSGI_APPLICATION− 우리가 설정 한 모든 서버는 WSGI 파일이 어디에 있는지 알아야합니다. 외부 서버를 사용하는 경우 자체 설정으로 표시됩니다. 기본적으로 wsgi.py의 객체를 가리 킵니다.

  • DATABASES− Django 프로젝트가 현재 액세스하고있는 데이터베이스로 설정됩니다. 기본 데이터베이스를 설정하는 것은 필수입니다. 우리가 선택한 데이터베이스를 설정하는 경우 HOST, USER, PASSWORD, PORT, 데이터베이스 이름 및 적절한 ENGINE과 같은 데이터베이스와 관련된 몇 가지 사항을 언급해야합니다.

  • STATIC_URL− STATIC_ROOT에 위치한 정적 파일을 참조 할 때 사용하는 URL입니다. 기본적으로 없음입니다.

그러나 정적 파일에 대한 경로를 추가해야 할 수도 있습니다. 파일의 끝으로 이동하여 STATIC_URL 항목 바로 아래에 아래와 같이 STATIC_ROOT라는 새 항목을 추가합니다.

myFirstDjangoProject/settings.py

STATIC_URL = '/ 정적 /'

STATIC_ROOT = os.path.join (BASE_DIR, '정적')

데이터베이스 설정

사이트에 대한 날짜를 저장할 수있는 다양한 데이터베이스 소프트웨어가 있습니다. 기본값 인 sqlite3을 사용합니다.

이것은 이미 아래 주어진 부분에 설정되어 있습니다. myFirstDjangoProject/settings.py

DATABASES = {
   'default': {
      'ENGINE': 'django.db.backends.sqlite3',
      'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
   }
}

블로그 용 데이터베이스를 생성하기 위해 콘솔에서 다음을 실행 해 보겠습니다. python manage.py migrate (우리는 manage.py 파일을 포함하는 myFirstDjangoProject 디렉토리에 있어야합니다.

모든 것이 잘되면 다음과 같은 출력을 얻을 수 있습니다.

웹 서버 시작

manage.py 파일이 포함 된 디렉토리에 있어야합니다. 콘솔에서 다음과 같이 python manage.py runserver를 실행하여 웹 서버를 시작할 수 있습니다.

이제 웹 사이트가 실행 중인지 확인하기 만하면됩니다. 브라우저 (Firefox, Chrome, Safari, Internet Explorer 또는 사용하는 모든 항목)를 열고이 주소를 입력하십시오.

http://127.0.0.1:8000/

또는

http://localhost:8000/ # 웹 서버는 로컬 머신에서만 실행됩니다.

축하합니다! 방금 첫 번째 웹 사이트를 만들고 웹 서버를 사용하여 실행했습니다!

웹 서버가 실행되는 동안에는 추가 명령을 입력하라는 새 명령 줄 프롬프트가 표시되지 않습니다. 터미널은 다음 텍스트를 받아들이지 만 새 명령을 실행하지는 않습니다. 이는 웹 서버가 들어오는 요청을 수신하기 위해 지속적으로 실행되기 때문입니다.

장고 모델

우리는 블로그에 모든 게시물을 저장할 Django 모델을 만들려고합니다. 그러나 그것이 작동하는지 확인하려면 사물에 대해 배워야합니다.

사물

개체는 속성 및 작업의 모음입니다. 예를 들어 이것을 이해합시다. 고양이를 모델링하고 싶다고 가정하고, 색상, 나이, 기분 (좋음 / 나쁨 / 졸음) 및 소유자와 같은 속성을 가진 Cat이라는 개체를 만듭니다.

그런 다음 고양이는 몇 가지 행동을 취합니다.

Cat 
-------- 
color 
age 
mood 
owner 
purr() 
scratch() 
feed(cat_food) 
CatFood 
-------- 
taste

그래서 기본적으로 우리는 속성 (객체 속성이라고 함)과 액션 (메서드라고 함)을 사용하여 코드에서 실제를 설명하려고합니다.

블로그를 구축 할 때 텍스트 콘텐츠와 제목이 필요합니다. 또한 저자의 이름, 작성일, 발행일이 필요합니다.

따라서 블로그에는 다음과 같은 객체가 있습니다.

Post 
-------- 
title 
text 
author 
created_date 
published_date

또한 해당 게시물을 게시하는 몇 가지 방법이 필요합니다. 이제 객체가 무엇인지 알고 있으므로 블로그 게시물을위한 Django 모델을 만들 수 있습니다.

모델은 Django에서 특별한 종류의 객체이며 데이터베이스에 저장됩니다. 데이터를 SQLite 데이터베이스에 저장합니다.

응용 프로그램 만들기

모든 것을 명확하게 유지하기 위해 프로젝트 내에 별도의 응용 프로그램을 만들 것입니다. 아래에서는 아래에 언급 된 간단한 명령을 실행하여 블로그 웹 응용 프로그램을 만들어 보겠습니다.

이제 새 myBlog 디렉토리가 생성되고 여기에 여러 파일이 포함되어 있음을 알 수 있습니다. 프로젝트의 디렉토리와 파일은 다음과 같아야합니다.

응용 프로그램을 만든 후에는 Django에게 사용하도록 지시해야합니다. myFirstDjangoProject / settings.py 파일에서이를 수행합니다.

INSTALLED_APPS = [
   'django.contrib.admin',
   'django.contrib.auth',
   'django.contrib.contenttypes',
   'django.contrib.sessions',
   'django.contrib.messages',
   'django.contrib.staticfiles',
   'myBlog',
]

블로그 게시물 모델 만들기

에서 myBlog/models.py 파일에서 Models라는 모든 개체를 정의합니다. 여기에서 블로그 게시물을 정의합니다.

myBlog / models.py를 열고 모든 것을 제거하고 다음과 같이 코드를 작성해 보겠습니다.

첫째, from 또는 import를 호출하여 다른 파일에서 일부 기능을 가져옵니다. 따라서이를 통해 모든 파일에 동일한 내용을 복사하여 붙여 넣는 대신 다음과 같은 일부 부분을 포함 할 수 있습니다.from and import.

class Post(models.Model) −이 라인은 모델을 정의합니다 (객체).

  • class는 객체를 정의하고 있음을 나타내는 특수 키워드입니다.

  • Post는 우리 모델의 이름입니다. 항상 대문자로 클래스 이름을 시작하십시오.

  • models.Model은 Post가 Django 모델임을 의미하므로 Django는 데이터베이스에 저장되어야 함을 알고 있습니다.

이제 위에서 정의한 속성 인 title, text, created_date, published_date 및 author에 대해 논의하겠습니다. 이를 위해 각 필드의 유형을 정의해야합니다.

  • models.CharField-제한된 수의 문자로 텍스트를 정의하는 방법입니다.

  • Models.TextField-이것은 제한이없는 긴 텍스트입니다.

  • Models.DateTimeField-이것은 날짜와 시간입니다.

  • Models.ForeignKey-이것은 다른 모델에 대한 링크입니다.

함수 / 방법을 다음과 같이 정의합니다. def 그리고 publish는 메소드의 이름입니다.

메서드는 종종 무언가를 반환합니다. 여기서 __str __ ()을 호출하면 Post 제목이있는 텍스트 (문자열)를 얻을 수 있습니다.

데이터베이스에서 모델에 대한 테이블 만들기

마지막 단계는 데이터베이스에 새 모델을 추가하는 것입니다. 먼저, Django가 모델을 변경했음을 이해하도록해야합니다. 콘솔 창에서 명령을 사용하여 동일한 작업을 수행하겠습니다.python manage.py make migrations myBlog 아래와 같이-

그런 다음 Django는 이제 데이터베이스에 적용해야하는 마이그레이션 파일을 준비합니다. 콘솔에서 다음을 입력 할 수 있습니다.python manage.py migrate myBlog 출력은 다음과 같아야합니다.

이제 Post 모델이 데이터베이스에 있습니다.

Django 관리자

방금 모델링 한 게시물을 추가, 편집 및 삭제하기 위해 Django 관리자를 사용하고 있습니다.

그래서 우리는 myBlog/admin.py file 그리고 아래에 내용을 넣으십시오-

먼저, 이전 장에서 정의한 Post 모델을 가져옵니다 (포함). 모델을 관리자 페이지에 표시하려면 admin.site.register (Post)에 모델을 등록해야합니다.

관리자 사이트에 로그인하려면 사이트의 모든 것을 제어 할 수있는 사용자 계정 인 수퍼 유저를 만들어야합니다. 따라서 웹 서버를 중지하고 명령 줄 python을 입력하십시오manage.py createsuperuser를 입력하고 Enter를 누르십시오.

이제 Post 모델을 살펴볼 시간입니다. 웹 서버를 실행하려면 콘솔에서 python manage.py run server를 실행해야합니다. 브라우저로 이동하여 주소를 입력하십시오.https://127.0.0.1:8000/admin/.방금 선택한 자격 증명으로 로그인하십시오. 그러면 아래와 같이 Django 관리 대시 보드가 표시됩니다.

게시물로 이동하여 약간 실험 해보십시오. 어디에서나 많은 블로그 게시물과 콘텐츠를 추가 할 수 있습니다. 귀하의 블로그는 다음과 같습니다.

이것은 Django의 개요 일 뿐이며 몇 줄의 코드만으로 블로그를 만들 수 있습니다.