Django 시작하기 – 소개 및 튜토리얼

폭로: 귀하의 지원은 사이트 운영을 유지하는 데 도움이됩니다! 이 페이지에서 권장하는 일부 서비스에 대한 추천 수수료가 발생합니다.


Django는 Python으로 작성된 웹 응용 프로그램을위한 빠른 개발 프레임 워크입니다.

개발 프레임 워크는 소프트웨어를 신속하게 구축하기위한 도구 세트와 소프트웨어 구축 방법에 대한 의견을 가진 응용 프로그램 골격입니다..

프레임 워크는 데이터베이스 연결, 사용자 로그인, 세션 관리, 요청 라우팅과 같은 가장 일반적인 기능을 제공하여 “보일러 플레이트”코드를 줄입니다. 앱의 특정 목적에 관계없이 거의 모든 애플리케이션에 필요하며 새 프로젝트마다 다시 디자인 할 필요가 없습니다..

개발 프레임 워크는 시스템 아키텍처도 제공합니다. 코드를 구성하는 방법을 결정하는 데 시간과 에너지를 소비하는 대신 (또는 끝없는 문제가 발생하지 않는 문제) 프레임 워크는 기능을 구성하는 올바른 방법을 제공하므로 생성을 시작할 수 있습니다..

첫 번째 앱을 설정하는 과정에서 그 구조가 어떻게 보이는지 살펴 보겠습니다..

시작하기

인터넷에 대한 액세스, 명령 줄에 대한 기본 지식 및 코드 편집기 만 있으면됩니다..

대부분의 Linux 사용자는 터미널에 액세스하는 방법을 알고 있을지 모르지만 Linux 터미널을 사용하지 않을 경우를위한 빠른 안내서가 있습니다. Mac OS X를 사용하는 경우 터미널 앱에서 Linux / Unix와 같은 명령 줄에 액세스 할 수 있습니다.

Windows 명령 행은 Mac OS X 및 Linux (bash)와 약간 다릅니다..

Windows Powershell을 사용할 수 있지만 여기뿐만 아니라 대부분의 다른 자습서 및 참조 안내서에서도 상당히 “번역”해야합니다..

가장 쉬운 방법은 아마도 bash 터미널을 설치하는 것입니다..

몇 가지 옵션이 있습니다.

  • Cygwin : 이것은 bash 터미널을 포함하여 Windows 용 Linux / Unix 도구 모음입니다..
  • Gitbash : Git for Windows는 bash 구현과 함께 제공됩니다. 어쨌든 버전 제어에 git (및 Github)을 사용하고 싶을 것입니다..
  • Windows 10에는 Ubuntu 기반 Bash 셸이 포함되어 있습니다. 작동 시키려면 약간의 시간이 걸립니다.

모든 것을 설치

Django를 실행하기위한 몇 가지 단계가 있습니다 : Python, Python 패키지 관리자 업그레이드, 가상 환경 설정 및 Django 설치.

파이썬

컴퓨터에 Python이 없으면 필요합니다. 모든 주요 운영 체제의 Python에 대한 링크는 Python 다운로드 페이지를 참조하십시오..

Python 2가 아닌 Python 3이 필요합니다. Django와 함께 Python 2를 사용할 수 있지만 Python 3은 언어의 현재와 미래입니다.

Python과 Django에 들어가는 경우 Python 3을 사용하십시오..

컴퓨터에 이미 Python 2가있을 수 있습니다. 이 글을 쓰는 시점에서 Mac OS X에는 Python 2가 포함되어 있으며 일부 Linux 배포판도 있습니다. Python 3을 설치하고 사용하십시오. (다음 단계에서 볼 수 있듯이 컴퓨터에 두 가지 버전의 Python이 있어도 문제가되지 않습니다.)

사용중인 Python 버전이 확실하지 않으면 명령 행에 python을 입력하십시오..

당신에게 말할 것입니다. 예를 들어 다음은 Python 버전 3.5.1을 실행중인 경우 표시되는 내용입니다.

> 파이썬
Python 3.5.1 (v3.5.1 : 37a07cee5969, 2015 년 12 월 5 일, 21:12:44)
[GCC 4.2.1 (Apple Inc. 빌드 5666) (도트 3)] 다윈
유형 "도움", "저작권", "크레딧" 또는 "특허" 자세한 내용은.

python을 실행하면 v2가 표시되면 python3을 사용해보십시오. 파이썬 3이 설치되어 있다면.

파이썬 패키지 관리자 업그레이드

Python은 Python 패키지 관리자 인 pip와 함께 제공됩니다. 그러나 업그레이드해야합니다 (Pip 업데이트 번들은 pip 업데이트 할 때마다 업그레이드되지 않습니다). 다행히도 pip는 빠른 터미널 명령으로 자체 업그레이드됩니다.

> pip install-업그레이드 pip

파이썬 가상 환경

Django 프로젝트를 포함한 모든 Python 프로젝트에는 일반적으로 여러 개의 타사 패키지가 포함됩니다..

파이썬을 많이 사용하면 결국 버전 충돌이 발생합니다.이 프로젝트에는 v4.3 버전이 필요하지만 해당 프로젝트에는 v5.1 버전이 필요합니다. 해결책은 파이썬 가상 환경입니다.

파이썬을위한 몇 가지 가상 환경 도구가 있습니다. 우리는 virtualenv를 사용합니다. 먼저 pip로 설치하십시오.

> pip install virtualenv

다음으로 Django 프로젝트를위한 가상 환경을 설정하십시오. Django 프로젝트를 저장할 새 디렉토리를 만듭니다..

이 디렉토리에는 프로젝트 디렉토리 및 기타 것들이 포함되어 있으므로 혼동되지 않도록 프로젝트 이름 이외의 이름을 지정하는 것이 가장 좋습니다. 이것을 장고 프로젝트라고 부르겠습니다.

컨테이너 디렉토리를 만든 다음 디렉토리 내부에서 virtualenv를 실행하십시오..

virtualenv를 실행할 때 python3을 지정하고 환경에 이름 (djenv)을 지정한 다음 가상 환경을 활성화합니다..

> mkdir django-projects
> CD 장고 프로젝트
~ / django-projects > virtualenv -p python3 djenv
~ / django-projects > 소스 djenv / bin / activate
(djenv) ~ / django-projects >

이제 djenv라는 가상 환경에 있습니다. 설치 또는 업그레이드하는 모든 pip 패키지는이 가상 환경이 활성화 된 경우에만 사용할 수 있습니다.

가상 환경을 비활성화하려면 deactivate를 입력하십시오..

이름 지정에 대한 간단한 참고 사항 – virtualenv, Django 및 Python에 대한 대부분의 설명서는 일반적으로 가상 환경 예제의 이름으로 venv를 사용합니다..

컴퓨터에서 여러 가지 다른 것을 만들 수 있기 때문에 혼란 스러울 수 있으며 어느 것이 어떤 것인지 기억하는 것이 도움이됩니다.

또한 venv는 다른 Python Virtual Environment 도구의 이름입니다..

유용한 접근 방식은 프로젝트와 관련이있는 환경의 이름을 지정하는 것입니다 (djangv for djangv environment). 원하는 이름을 지정할 수 있습니다.

장고 설치

이것은 매우 쉽습니다.

(djenv) ~ / django-projects > 핍 설치 장고

가상 환경을 비활성화하고 시스템 전체에 Django를 설치할 수 있습니다. 그것은 당신에게 달려 있습니다.

어느 쪽이든, pip는 Django 및 모든 종속 항목을 설치하기 시작합니다. 시간이 좀 걸릴 수 있습니다.

프로젝트 시작

“프로젝트”는 일반적으로 하나의 완전한 웹 사이트 (또는 잠재적으로 사이트 모음)로 이해됩니다..

사이트에는 블로그, 포럼, 상점, 도움말 채팅 등 여러 가지 기능이있을 수 있습니다..

이들 각각을“응용 프로그램”(또는“앱”)이라고합니다. 프로젝트는 앱 모음입니다.

이것은 사물을 구조화하는 방법에 중요하지만 사물을 명명하는 방법에도 중요합니다.

사람들이 사진을 공유 할 수있는 새로운 웹 앱을 만들고 싶다고 상상해보십시오. 마음 속으로 전체 사이트는 “앱”입니다.

그러나 photo-share-app라는 이름으로 Django 프로젝트를 초기화하면 중복 된 디렉토리 이름과 혼동 될 것입니다.

장고 프로젝트의 구조

Django 프로젝트의 디렉토리 구조는 다음과 같습니다.

– / project-name /
– 프로젝트 이름 /
– 앱 이름 /
– 앱 이름 /
– 앱 이름 /

처음 프로젝트를 초기화하면 최상위 프로젝트 디렉토리가 있고 그 안에 두 번째 디렉토리가 있습니다..

최상위 레벨은 나머지 컨테이너 역할을합니다. 두 번째 수준에는 프로젝트 전체에 대한 구성 파일이 있습니다..

빌드중인 새 애플리케이션은 하나 이상의 추가 앱 디렉토리에 있습니다..

이것은 약간의 성가심을 만듭니다. 멋진 이름으로 멋진 새 웹 앱을 만들고 있다고 가정하면 (생각해 보자) 생각하지 않으면 다음과 같이 끝납니다.

– / wiht /
– 와 /
– ?… 내가 만들고있는 것을 무엇이라고해야합니까 …? /

제안 사항은 다음과 같습니다.

– / wiht_site /
– wiht_site /
– wiht_app /

이를 통해 모든 것이 명확하고 기억하기 쉽습니다. 또한 사용하려는 일반 웹 사이트 기능을 쉽게 조일 수 있습니다..

또는 독립형 모듈로 이해되는 경우 추가 사용자 지정 앱을 직접 만들 수 있습니다.

– / wiht_site /
– wiht_site /
– wiht_app /
– 타사 블로그 앱 /
– 타사 포럼 앱 /
– crm-app /

Django Docs는 mysite를 사용하므로 예를 들어 좋습니다. 각 프로젝트마다 고유 한 이름을 원할 것입니다.

(물론, 장고를 사용하기 위해 새로운 앱을 만들 필요는 없습니다. 프로젝트를 설정하고 기존 앱 모음을 사용하면됩니다..

이 방법으로 복잡한 다기능 웹 사이트를 신속하게 구축하고 실행할 수 있으며 나중에 고객이 만든 앱을 추가 할 수있는 유연성이 있습니다.)

(마지막) 프로젝트 초기화

“컨테이너”디렉토리 (위에서 / django-projects를 사용함)와 가상 환경이 활성화 된 상태에서 django-admin 명령으로 새 프로젝트를 초기화하십시오..

(djenv) ~ / django-projects > django-admin startproject wiht_site

이제 당신은 :

– / wiht_site /
– manage.py
– wiht_site /
– __init__.py
– settings.py
– urls.py
– wsgi.py

이제 테스트 서버를 실행하여 모든 것이 올바르게 발생했는지 확인하십시오..

(djenv) ~ / django-projects > cd wiht_site
(djenv) ~ / django-projects / wiht_site > python manage.py runserver

다음과 같은 결과가 나옵니다.

시스템 점검 수행…

시스템 검사에서 문제가 없음을 확인했습니다 (0 침묵)..

적용되지 않은 마이그레이션이 있습니다. 앱이 적용될 때까지 제대로 작동하지 않을 수 있습니다.
‘python manage.py migrate’를 실행하여 적용하십시오..

2016 년 4 월 22 일-17:45:53
‘wiht_site.settings’설정을 사용하는 Django 버전 1.9
http://127.0.0.1:8000/에서 개발 서버 시작
CONTROL-C를 사용하여 서버를 종료하십시오..

브라우저에서 http://127.0.0.1:8000을 열면 “Django에 오신 것을 환영합니다”메시지가 표시됩니다..

첫 번째 앱 초기화

여기에서 항상 djenv 환경이 활성화 된 최상위 wiht_site 디렉토리 (하위 디렉토리)에 있다고 가정하십시오..

예제에서 이것을 볼 때 :

>

당신이 여기 있다고 가정하십시오 :

(djenv) ~ / django-projects / wiht-app >

manage.py를 사용하여 새 앱을 만듭니다..

> python manage.py startapp wiht_app

다음 내용으로 / wiht_app /라는 새 디렉토리가 생성됩니다.

– __init__.py
– admin.py
– apps.py
– 마이그레이션 /
– __init__.py
– models.py
– tests.py
– views.py

이제 앱을“설치”해야합니다. /wiht_site/wiht_site/settings.py를 열고 INSTALLED_APPS를 찾으십시오. 새 앱을 포함하도록 수정해야합니다..

INSTALLED_APPS = [
‘wiht_app’,
‘django.contrib.admin’,
‘django.contrib.auth’,
‘django.contrib.contenttypes’
‘django.contrib.sessions’,
‘django.contrib.messages’,
‘django.contrib.staticfiles’,
]

무언가 개발

Django 앱에는 Model-View-Controller 아키텍처와 비슷한 것이 있습니다. Django 설명서는 때때로 Model-View-Template을 호출합니다..

이는 채택하기 쉽고 반복적 인 개발 패턴으로 이어집니다.

  • 추적 할 데이터 유형과 서로 관련되는 방법을 정의하는 모델 작업;
  • 뷰에서 작업하여 데이터에 액세스하는 방법과 데이터 조작시 수행 할 작업을 정의합니다.
  • 사용자에게 표시되거나 다른 응용 프로그램에서 소비 될 때 데이터가 표시되는 방식을 정의하는 템플릿 작업.
모델 및 마이그레이션

새로운 기능을 만드는 것은 보통 모델을 만드는 것으로 시작합니다. 모델은 시스템의 다양한 객체와 서로 관련되는 방법을 정의하는 클래스 (OOP 의미)입니다. 따라서 블로그 응용 프로그램에는 Post, Page, Category, Comment 등의 모델이있을 수 있습니다. 주석은 하위 클래스 (유형) 게시물이고 게시물과 페이지는 ContentItem의 하위 클래스 일 수 있습니다..

모델은 각 앱의 models.py 파일에 작성됩니다. 다음은 블로그 게시물을위한 매우 간단한 모델의 시작입니다..

django.db 가져 오기 모델에서
django.contrib.auth.models에서 사용자 가져 오기

# 여기에서 모델을 만드십시오.
Post (models.Model) 클래스 :

제목 = models.CharField (
최대 길이 = 100,
)

슬러그 = models.SlugField (
unique = 참,
)

발췌 = models.TextField (
max_length = 255,
)

내용 = models.TextField (
blank = 참,
)

저자 = models.ForeignKey (
사용자,
)

created = models.DateTimeField (
auto_now_add = 참,
)

데프 __str__ (자체) :
self.title을 반환

Django에는 데이터베이스에 추상화 계층을 제공하는 자체 ORM (Object Relational Mapper)이 있습니다. 이를 통해 특정 데이터베이스 관리 시스템을 참조하지 않고 SQL을 작성할 필요없이 데이터 모델을 정의 할 수 있습니다..

모델을 추가 할 때 마이그레이션을 생성 한 다음 실행합니다. 마이그레이션은 모델과 일치하도록 데이터베이스 디자인을 변경하는 자동 생성 된 SQL 명령 집합입니다. Django의 ORM은 모델을 SQL 마이그레이션으로 변환합니다..

이를 수행하기 전에 데이터베이스를 설정하고 연결해야합니다. 여기에는 많은 옵션이 있지만 대부분의 Django 사용자는 PostgreSQL을 선호하며 다른 데이터베이스에서는 사용할 수없는 Django 용 특별 PostgreSQL 도구가 있습니다.

데이터베이스가 실행되면 마이그레이션 할 수 있습니다.

> python manage.py makemigrations
> python manage.py 마이그레이션

관리자

Django는 데이터에 대한 자동 관리보기를 제공하므로 모델에서 거의 즉시 기본 CRUD 작업을 수행 할 수 있습니다. 편집 UI 요구 사항이 그리 복잡하지 않은 경우 자체 편집보기를 작성하지 않고도 관리 사이트를 사용할 수 있습니다. 관리 모듈에 모델을 등록하기 만하면됩니다. 이것은 응용 프로그램 디렉토리의 admin.py에서 수행됩니다..

django.contrib에서 가져 오기 관리자
.models import Post에서

admin.site.register (포스트)

이제 로그인하여 Admin에 액세스하려면 명령 행에서 수퍼 유저를 작성하십시오..

> python manage.py createsuperuser

사용자 이름, 이메일 및 비밀번호에 대한 터미널 프롬프트를 따르십시오. 그런 다음 서버를 시작하십시오.

> python manage.py runserver

http://127.0.0.1:8000/admin/에서 로그인 할 수 있어야합니다. 모든 것이 올바르게 구성되면 간단한 블로그 게시물을보고, 추가하고, 편집하고, 삭제할 수 있어야합니다..

이제 소수의 샘플 게시물을 작성하기에 좋은시기입니다. 다음 단계를 더욱 의미있게 만듭니다.

보기

Django에서“View”는 프론트 엔드 디스플레이 코드가 아닙니다 (“템플릿”이라고 함). Django가 View라고 부르는 것은 다른 프레임 워크의 “컨트롤러”와 더 비슷합니다. HTTP 요청을 인수로 받아 응답을 리턴하는 함수입니다. 일반적으로 응답은 웹 페이지의 내용으로, 템플릿에서 액세스 할 수 있습니다. 응답은 리디렉션, 오류 메시지, 파일 또는 다른 것일 수도 있습니다..

가장 일반적인 상황은 특정 콘텐츠 (예 : 하나의 특정 게시물)에 대한 요청을 전송 한 다음 해당 콘텐츠와 관련된 모든 데이터 (제목, 발췌, 콘텐츠, 저자). 또 다른 일반적인 상황은 블로그의 첫 페이지 나 뉴스 피드와 같은 컨텐츠 항목 목록을 표시하려는 경우입니다..

장고는 내장 된 일반 뷰를 제공하여이를 빠르게 달성합니다. 우리가 사용할 두 가지는 ListView와 DetailView입니다. 뷰를 확장하거나 직접 뷰를 만들려면 views.py에서 수행하지만 지금은 그대로 사용합니다..

이제 이러한 뷰를 URL에 매핑하면됩니다. /wiht_site/urls.py에서 앱별 URL 매핑을 포함해야합니다..

django.conf.urls에서 URL 가져 오기, 포함
django.contrib에서 가져 오기 관리자

urlpatterns = [
url (r ‘^ admin /’, admin.site.urls),
url (r ‘^’, include ( ‘wiht_app.urls’)),
]

그런 다음 앱의 urls.py를 편집하십시오..

django.conf.urls에서 URL 가져 오기, 포함
에서. 뷰 가져 오기
django.views.generic import ListView, DetailView에서
.models import Post에서

urlpatterns = [
url (
r ‘^ blog /

각 패턴을 정의하는 url () 함수에는 쉼표로 구분 된 일련의 인수가 있습니다.

  • 들어오는 요청과 일치하는 URL 패턴을 정의하는 정규식;
  • 인수가있는 정의 된보기 :
    • 모델;
    • 템플릿 파일 이름;
  • 이 URL 패턴의 이름.

위 패턴은 / blog / 및 / blog / post-slug / URL 패턴을 ListView 및 DetailView에 일치시킨 다음 해당 템플리트 (index.html 및 post.html)를 지정합니다..

주형

남은 것은이 콘텐츠를 표시 할 템플릿을 만드는 것입니다. Django는 Jinja 템플릿을 사용합니다..

세 개의 새 파일을 작성하십시오.

/wiht_site/wiht_app/templates/wiht_app/main.html

{% 블록 내용 %}
{% 엔드 블록 %}

/wiht_site/wiht_app/templates/wiht_app/index.html

{% 연장 "wiht_app / main.html" %}

{% 블록 내용 %}

게시물

{object_list의 항목에 대한 %%}

{{entry.title}}

{{entry.excerpt}}

{% endfor %}

{% 엔드 블록 %}

/wiht_site/wiht_app/templates/wiht_app/post.html

{% 연장 "wiht_app / main.html" %}

{% 블록 내용 %}

{{post.title}}

{{post.author}}
게시일 : {{post.created}}
{{post.content}}

{% 엔드 블록 %}

축하합니다. 이제 블로그 애플리케이션이 작동해야합니다..

추가 자료 및 자료

코딩 및 개발과 관련된 더 많은 가이드, 자습서 및 인포 그래픽이 있습니다.

  • Python 소개, 리소스 및 FAQ :이 기사에는 Python 전문가가되는 데 도움이되는 수많은 리소스가 포함되어 있습니다..
  • Web Server Gateway Interface Primer :이 사양을 사용하여 Django에서 Python 프레임 워크를 사용하는 방법에 대해 알아보십시오..
  • Ruby on Rails 소개 :이 기사에서는 Python 및 Django의 대안을 소개합니다..

,
ListView.as_view (
queryset = Post.objects.all (). order_by (“만든”) [: 50],
template_name =”wiht_app / index.html”
),
name = ‘게시물 목록’
),
url (
r’blog / (? P [a-zA-Z0-9] + (? :-[a-zA-Z0-9] +) *) / 각 패턴을 정의하는 url () 함수는 일련의 쉼표로 구분됩니다 인수 :

  • 들어오는 요청과 일치하는 URL 패턴을 정의하는 정규식;
  • 인수가있는 정의 된보기 :
    • 모델;
    • 템플릿 파일 이름;
  • 이 URL 패턴의 이름.

위 패턴은 / blog / 및 / blog / post-slug / URL 패턴을 ListView 및 DetailView에 일치시킨 다음 해당 템플리트 (index.html 및 post.html)를 지정합니다..

주형

남은 것은이 콘텐츠를 표시 할 템플릿을 만드는 것입니다. Django는 Jinja 템플릿을 사용합니다..

세 개의 새 파일을 작성하십시오.

/wiht_site/wiht_app/templates/wiht_app/main.html

/wiht_site/wiht_app/templates/wiht_app/index.html

/wiht_site/wiht_app/templates/wiht_app/post.html

축하합니다. 이제 블로그 애플리케이션이 작동해야합니다..

추가 자료 및 자료

코딩 및 개발과 관련된 더 많은 가이드, 자습서 및 인포 그래픽이 있습니다.

  • Python 소개, 리소스 및 FAQ :이 기사에는 Python 전문가가되는 데 도움이되는 수많은 리소스가 포함되어 있습니다..
  • Web Server Gateway Interface Primer :이 사양을 사용하여 Django에서 Python 프레임 워크를 사용하는 방법에 대해 알아보십시오..
  • Ruby on Rails 소개 :이 기사에서는 Python 및 Django의 대안을 소개합니다..

,
DetailView.as_view (
model = 포스트,
template_name ="wiht_app / post.html"),
이름 ="게시하다"
)
]

각 패턴을 정의하는 url () 함수에는 쉼표로 구분 된 일련의 인수가 있습니다.

  • 들어오는 요청과 일치하는 URL 패턴을 정의하는 정규식;
  • 인수가있는 정의 된보기 :
    • 모델;
    • 템플릿 파일 이름;
  • 이 URL 패턴의 이름.

위 패턴은 / blog / 및 / blog / post-slug / URL 패턴을 ListView 및 DetailView에 일치시킨 다음 해당 템플리트 (index.html 및 post.html)를 지정합니다..

주형

남은 것은이 콘텐츠를 표시 할 템플릿을 만드는 것입니다. Django는 Jinja 템플릿을 사용합니다..

세 개의 새 파일을 작성하십시오.

/wiht_site/wiht_app/templates/wiht_app/main.html

/wiht_site/wiht_app/templates/wiht_app/index.html

/wiht_site/wiht_app/templates/wiht_app/post.html

축하합니다. 이제 블로그 애플리케이션이 작동해야합니다..

웹 호스팅 쿠폰

Django 호스팅에 대한 많은 것을 찾고 있습니다?
A2 Hosting은 최근 속도 및 성능 테스트에서 1 위를 차지했습니다. 현재 개발자 중심 계획에서 최대 50 %를 절약 할 수 있습니다.
이 할인 링크를 사용하십시오
거래를 얻기 위해.

추가 자료 및 자료

코딩 및 개발과 관련된 더 많은 가이드, 자습서 및 인포 그래픽이 있습니다.

  • Python 소개, 리소스 및 FAQ :이 기사에는 Python 전문가가되는 데 도움이되는 수많은 리소스가 포함되어 있습니다..
  • Web Server Gateway Interface Primer :이 사양을 사용하여 Django에서 Python 프레임 워크를 사용하는 방법에 대해 알아보십시오..
  • Ruby on Rails 소개 :이 기사에서는 Python 및 Django의 대안을 소개합니다..
Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me