장고속성반

업데이트 버전은 ceiphr.com입니다.

소개


이것은 튜토리얼이 아니다.이 속성 과정은 빠른 입문 방법으로 기본적인 Django 사이트를 만들 수 있으며 복잡한 웹 응용 프로그램을 만드는 데 필요한 기본 개념을 깊이 있게 이해할 필요가 없다.이 속성 과정의 모든 단계에서 저는 당신이 사용하는 도구와 개념에 대해 더욱 투철하게 설명하여 첫 번째 프로젝트를 만들 때 Django를 더욱 잘 이해할 수 있도록 하겠습니다.

선결 조건


Basic Python, HTML, CSSUnix Command Line.
네가 이 모든 것에 만족하기만 한다면, 너는 매우 좋다.

우리의 목표


우리는 제목, 날짜, 설명이 담긴 사진을 올릴 수 있는 사이트를 만들고 있다.이해하기 쉽다

그럼 장고는 뭐예요?


Django/JANG-oh-일종의 도구(web framework)로 가장 유명한 것은 사람들이 신속하게 깔끔한 사이트를 만드는 데 도움을 주는 것이다. 거의 오류가 없다.
Django에서 제작물은 다음 모드를 따릅니다.

  • 모형-물품을 어떻게 저장하는가.여기서 Django가 이미지, 제목, 날짜, 설명을 저장하는 방법을 알려 드리겠습니다.

  • 보기 - 항목이 생각하는 곳.이것이 바로 우리의 사이트가 어떻게 우리의 모델에 따라 저장된 내용을 얻고 사용자를 위해 처리하는지이다.

  • 템플릿 - 당신의 프로젝트가 생각하는 것을 어떻게 표현하는지.뷰는 모델을 기준으로 처리된 내용을 표시하는 데 사용됩니다.
  • Django는 더 복잡한 일을 하지만 처음에는 이것이 당신이 지금 알아야 할 전부입니다.[in-depth]

    프로젝트 설정


    Windows 사용자 참고: 기본적으로 Windows에는 유닉스 명령줄이 없습니다. 이것은 이 속성 과정의 선결 조건입니다.2018년 10월 Windows 10 업데이트는 Ubuntu와 같은 Linux 서브시스템을 제공합니다.Unix 명령줄을 사용하려면 Linux 서브시스템을 설치하고 설정하십시오.
    컴퓨터 터미널을 사용하여 python 환경과 Django를 설정합니다.컴퓨터의 Documents 폴더에 항목을 만들고 다음 명령을 입력하십시오.
    cd ~/Documents
    python3 -m venv django_cc
    
    python3 -m venv django_ccdjango_cc이라는 폴더에 저희 프로젝트에 가상 환경을 만들어서 저희가 작업하기 위해 설치한 모든 것이 시스템의 다른 내용을 방해하지 않습니다.[in-depth]
    다음은 프로젝트 폴더에 들어가서 새로운python 환경을 사용하고 Django를 설치합니다.
    cd django_cc
    source bin/activate
    pip install django
    
    source bin/activate은 우리가 만든 가상 환경을 활성화합니다.이것은 우리가 Django를 설치할 때, 그것은 전체 시스템에 설치되지 않고, 단지 우리의 프로젝트에 설치된다는 것을 의미한다.pip install django은 Python의 패키지 관리자를 사용하여 최신 버전의 Django를 설치합니다.
    지금 Django가 설치되어 있습니다. 우리는 새로운 명령을 받았습니다.먼저 Django에서 프로젝트를 만들고 우리의 개발 데이터베이스를 이전하며 마지막으로 로컬 개발 서버를 시작하여 우리가 하는 모든 것이 정확하다는 것을 확보합시다.
    django-admin startproject django_cc
    cd django_cc
    python3 manage.py migrate
    python3 manage.py runserver
    
    django-admin start project django_cc은 Django에게 우리의 프로젝트의 주간을 다른 모든 것(즉 Django 응용 프로그램)에 연결하라고 알려 줍니다.이것은 Django와 상호작용하는 데 사용할 파일 manage.py의 위치이기도 합니다.[in-depth]python3 manage.py migrate은 Django가 우리 모델을 변경했다는 것을 알게 하는 데 사용됩니다.우리가 프로젝트를 막 시작했기 때문에, 이것은 우리의 초기 이전이며, Django 자신의 모델 (즉 계정, 활동 로그, 권한 등) 을 구축할 것이다.[in-depth]python3 manage.py runserver은 우리의 개발 서버를 시작할 것입니다. 우리는 그곳에서 우리의 프로젝트를 테스트할 것입니다.
    실행 중인 개발 서버를 보려면 브라우저에서 127.0.0.1:8000으로 이동하십시오.Django 시작 페이지가 나타납니다.

    데이터베이스


    다음은 당신이 가장 좋아하는 텍스트 편집기나python IDE를 캡처합니다. 왜냐하면 우리는 Django를 깊이 연구하기 때문입니다.우리는 우선 Django 응용 프로그램을 만들 것입니다. 거기에서 우리는 이 프로젝트를 위해 모든 모델을 작성할 것입니다.
    python manage.py startapp blog
    
    우리의 핵심 프로젝트가 이 응용 프로그램을 식별할 수 있도록 blogINSTALLED_APPS에 추가함으로써 우리의 django_cc/settings.py 응용 프로그램이 존재한다는 것을 알려야 한다. 아래와 같다.
    # Application definition
    
    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'blog',
    ]
    

    미디어 파일 지원


    Django가 업로드한 이미지와 같은 미디어 파일을 저장할 위치를 알 수 있도록 settings.py의 하단에 다음 내용을 추가합니다.
    # Media file support
    
    MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
    MEDIA_URL = '/media/'
    
    기본 DIRS이 아닌 [os.path.join(BASE_DIR, 'templates')]을 처리하려면 템플릿 폴더에 대해 동일한 작업을 수행해야 합니다.
    TEMPLATES = [
        {
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': [os.path.join(BASE_DIR, 'templates')],
            'APP_DIRS': True,
            'OPTIONS': {
                'context_processors': [
                    'django.template.context_processors.debug',
                    'django.template.context_processors.request',
                    'django.contrib.auth.context_processors.auth',
                    'django.contrib.messages.context_processors.messages',
                ],
            },
        },
    ]
    
    개발 서버에서 파일에 액세스할 수 있도록 []의 하단에 가져오기와 조건을 추가해야 합니다.
    from django.conf.urls import url
    from django.contrib import admin
    
    # Add these imports for static file support and to get
    # directory details from Django's settings.py
    from django.conf.urls.static import static
    from django.conf import settings
    
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
    ]
    
    # Add this to enable media file support on the development server
    if settings.DEBUG:
        urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
    
    [in-depth]
    다행이다. 우리의 프로젝트는 이미 세워졌으니, 우리는 모형을 작성하는 것부터 시작할 수 있다.

    우리의 모형을 작성하다


    우리의 새로운 django_cc/urls.py 응용 프로그램에서 blog 파일을 찾을 것입니다. 우리는 그 중에서 데이터베이스를 위한 모델을 작성할 것입니다.models.py 클래스는 이미지, 제목, 설명, 발표 날짜가 있는 게시물을 업로드하는 첫 번째 모델로 사용됩니다.
    from django.db import models
    import datetime
    
    class Post(models.Model):
        image = models.FileField(upload_to='images/')
        title = models.CharField(default="", max_length=64)
        description = models.CharField(default="", max_length=512)
        date = models.DateField(default=datetime.date.today)
    
    Post은 설정에 구성된 미디어 디렉터리의 이미지 폴더에 이미지를 업로드하는 필드로 사용됩니다.models.FileField(upload_to='images/')은 최대 문자 길이가 n인 기본 텍스트 필드입니다.models.CharField(default="", max_length=n)은 현재 날짜와 시간으로 설정된 날짜/시간 필드입니다.
    [in-depth]
    우리의 모델을 완성하기 위해서 Django에게 최신부터 최신까지 주문을 알려 드리겠습니다.
    class Post(models.Model):
        image = models.FileField(upload_to='images/')
        title = models.CharField(default="", max_length=64)
        description = models.CharField(default="", max_length=512)
        date = models.DateField(default=datetime.date.today)
        class Meta:
            ordering = ['-date']
        def __str__(self):
            return self.title
    
    models.DateField(default=datetime.date.today)류는 많은 일을 할 수 있습니다. 우리의 예에서 우리는 그것을 사용하여 시간에 따라 우리의 모델을 주문할 것입니다.Meta 함수는 Django가 나중에 Django 관리 패널의 항목과 상호작용할 때 제목을 표시합니다(Post1, Post2 등이 아니라).[in-depth]

    새로운 모델 마이그레이션


    다음 두 명령으로 우리의 모델을 끝냅니다. 이 두 명령은 기본적으로 Django에게 우리가 변경한 것을 알려주고 데이터베이스에 적용해야 합니다.
    python3 manage.py makemigrations
    python3 manage.py migrate
    
    축하우리의 데이터베이스는 모두 우리의 게시물을 위해 만들어진 것이다.그런데 문제가 하나 있어요.우리는 지금 그것들을 편집할 수 없다.게시물을 게시할 수 있도록 Django 관리 패널을 설정합니다.

    관리 제어판

    __str__ 응용 프로그램에서 blog으로 이동하여 다음을 추가합니다.
    from django.contrib import admin
    from blog.models import Post
    
    admin.site.register(Post)
    
    admin.py은 우리가 방금 만든 모든 모델을 가져왔습니다.from blog.models import Post은 Django가 이 모델을 제어판에 표시한다고 알려 줍니다.
    다음은 관리 패널에 로그인할 수 있는 슈퍼 사용자를 만들 것입니다.다음 명령을 입력하고 프롬프트에 따라 조작하십시오.사용자 이름과 비밀번호 알림만 입력하십시오.
    $ python3 manage.py createsuperuser
    Username (leave blank to use 'ari'):
    Email address:
    Password:
    Password (again):
    Superuser created successfully.
    
    완료되면 127.0.0.1:8000/admin으로 이동하여 방금 작성한 인증서를 사용하여 로그인하십시오.이 페이지를 보려면 다음과 같이 하십시오.

    여기서 당신은 당신의 Django 프로젝트에 댓글을 추가할 수 있습니다.우리의 모형이 정식으로 완성되었다.다음은 Django가 우리의 게시물을 서비스할 수 있도록 우리의 보기를 설계할 것입니다.

    뷰 논리


    보기는 Django가 페이지를 요청할 때 무엇을 해야 하는지 어떻게 알 수 있는지 보여 줍니다.우리가 해야 할 첫 번째 일은 admin.site.register(<model_name>)에서 views.py 파일을 만드는 것이다.파일에 다음 내용을 붙여넣습니다.
    from django.shortcuts import render
    from django.views.generic.base import View
    from django.views.generic import TemplateView
    from blog.models import Post
    
    class PostFeed(TemplateView):
        template_name = 'index.html'
    
        def get_context_data(self, *args, **kwargs):
            context = dict()
            context["posts"] = Post.objects.all()
            return context
    
    django_cc은 Django의 기본 템플릿 보기를 사용할 수 있도록 합니다. 이것이 바로 우리가 게시물을 표시하는 데 필요한 모든 내용입니다.from django.views.generic import TemplateView은 우리의 모든 데이터베이스 모델을 가져와서 우리의 보기 함수를 사용할 수 있도록 합니다.from blog.models import Post은 우리의 기본 템플릿 보기입니다. 이것은 우리가 다음에 만든 PostFeed 파일을 사용하여 데이터베이스 내용을 나타낼 것입니다.index.html은 우리가 데이터베이스에서 정보를 어떻게 보내는지 템플릿입니다.get_context_data 저희 템플릿은 context["posts"] = Post.objects.all() 사전의 posts을 참고하여 context을 사용하여 데이터베이스에서 수집한 모든 게시물의 목록을 얻을 것입니다
    [in-depth]Post.objects.all()에서 Django가 이 URL에 뷰를 호출할 시간을 알 수 있도록 새 경로를 추가해야 합니다.
    from django.conf.urls import url
    from django.contrib import admin
    from django.conf.urls.static import static
    from django.conf import settings
    
    # import path for easy urls
    from django.urls import path
    
    # import our views so urls.py can call them
    from django_cc.views import PostFeed
    
    urlpatterns = [
    
        # Path for root of our website that will display the post feed
        path('', PostFeed.as_view(template_name="index.html"), name="PostFeed"),
        url(r'^admin/', admin.site.urls),
    ]
    
    if settings.DEBUG:
        urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
    
    기본 보기 논리가 완성되었습니다. 게시물을 표시하는 색인 템플릿을 구축해야 합니다.

    스타일 템플릿


    Django 프로젝트의 루트 디렉터리에서 urls.pyblog 폴더를 찾을 수 있습니다. django_cc 폴더를 만들고 templates 파일을 만들 수 있습니다.우리 사이트의 디자인에 대해 우리는 프레임워크 Bulma을 사용할 것이기 때문에 우리는 어떠한 CSS도 작성할 필요가 없다.이것은 템플릿입니다. 우리는 우리의 템플릿에 사용할 수 있습니다.
    <!DOCTYPE html>
    <html lang="en">
      <head>
        <title>Posts | Django Crash Course</title>
        <link
          rel="stylesheet"
          href="https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.4/css/bulma.min.css"
          integrity="sha256-8B1OaG0zT7uYA572S2xOxWACq9NXYPQ+U5kHPV1bJN4="
          crossorigin="anonymous"
        />
      </head>
      <body></body>
    </html>
    
    Django 템플릿은 Django HTML이라는 건식 HTML 버전을 사용합니다.이것이 바로 우리가 index.html 템플릿에서 렌더링하기 위해 상하문을 보내는 방법입니다.템플릿의 본문에서 우리는 우리의 게시물에 상하문이 있는 기본 카드를 추가합니다.
    <div class="container">
      {% for post in posts %}
      <div class="card">
        <div class="card-image">
          <figure class="image">
            <img
              src="{{ post.image.url }}"
              alt="Placeholder image"
              style="max-width: 250px; max-height: 250px;"
            />
          </figure>
        </div>
        <div class="card-content">
          <div class="content">
            <b>{{ post.title }}</b> | {{ post.description }}
            <br />
            <time datetime="{{ post.date }}">{{ post.date }}</time>
          </div>
        </div>
      </div>
      {% endfor %}
    </div>
    
    index.html은 for순환으로 충당하며 {% for post in posts %}의 모든 게시물에 내용을 복사합니다.
    for 루프가 실행될 때마다 posts을 사용하여 게시물을 참조할 때 현재 교체 중인 게시물의 상하문은 HTML에 배치됩니다.{{ <variable> }}은 이미지 URL을 참조하는 방식으로, 이미지 자체만 참조할 수 없습니다.
    127.0.0.1:8000에 방문했을 때 제어판에 추가된 모든 게시물의 목록이 있어야 합니다.

    이제 Bulma 카드에 제어판에 추가된 내용을 표시할 수 있는 사이트가 생겼습니다.깔끔했어
    [in-depth]

    총결산


    Django는 웹 사이트와 다른 복잡한 사물을 구축하는 데 가장 좋은 틀이다.오늘 당신은 매우 기본적인 사이트를 만들었습니다. 인스타그램 같은 게시물을 표시할 수 있습니다. 앞으로 당신이 직접 인스타그램을 만들 수 있기를 바랍니다.현재 저는 their documentation 또는 this introduction (which got me started)을 통해 Django에 대한 더 많은 정보를 알고 싶습니다.
    참고로 - this tutorial by Digital Ocean을 따르면 당신의 Django 창작을 어떻게 진행하는지 배워서 세계에 보여줄 수 있습니다.만약 당신이 디지털 해양과 합작하고 싶다면, use my referral link for a discount으로 전화하세요.
    기사 표지 사진은 Fabian Grohs에서 Unsplash으로 촬영되었다.
    편집: PEP 8을 준수하기 위해 클래스 이름을 바꾸고 데이터베이스 응용 프로그램을 블로그로 이름을 바꿉니다.
    편집: {{ post.image.url }}, return context 템플릿 디렉터리 문제와 블로그 모델에 대한 인용을 복구했습니다.Chris Merck의 피드백에 감사드립니다.

    좋은 웹페이지 즐겨찾기