Django #3 | Django_tutorial(part#1)

신승호·2021년 4월 22일
0

Django

목록 보기
3/7

Project 만들기

  1. Django project를 구성하는 코드를 자동 생성 할 수 있다.
  • Django 인스턴스를 구성하는 설정들을 자동 생성 하는것이다.
    • database 설정
    • Django 위한 옵션
    • Application을 위한 설정들
  • 커맨드라인에서 cd 명령으로 코드를 저장할 디렉토리로 이동 한 후,위의 명령어 입력
    • 현재 디렉토리에서 mysite라는 디렉토리를 생성 하는 것
django-admin startproject mysite
  1. startproject 에서 뭐가 생성되었는지 확인해볼까 ?
  • mysite가 있는 디렉토리를 맞춘 후 tree . 입력
~/Desktop/wecode_project master*
base ❯ tree .
.
└── mysite
  ├── manage.py
  └── mysite
  ├── __init__.py
  ├── asgi.py
  ├── settings.py
  ├── urls.py
  └── wsgi.py

2 directories, 6 files    

내포되어있는 파일은,

  • manage.py: Django 프로젝트와 다양한 방법으로 상호작용 하는 커맨드라인의 유틸리티
  • mysite/ 디렉토리 내부에는 Project를 위한 실제 Python Package이 저장
    • 이 디렉토리의 이름을 가지고 Project의 어디서나 Python Package들을 import 가능
      ex) mysite.urls
  • mysite/__init__.py: Python으로 하여금 이 디렉토리를 패키지처럼 다루라고 알려주는 용도의 단순한 빈 파일
  • mysite/settings.py: 현재 Django project환경 및 구성을 저장
  • mysite/urls.py: (=URL dispatcher) 현재 ProjectURL 선언을 저장, Django 로 작성된 사이트의 《목차》 라고 할 수 있습니다.
  • mysite/asgi.py: Project를 서비스하기 위한 ASGI 호환 웹 서버의 진입점
  • mysite/wsgi.py: Project를 서비스하기 위한 WSGI 호환 웹 서버의 진입점.

개발 서버

  • 프로젝트가 제대로 동작하는지 확인을 위해, mysite 디렉토리로 이동하고, 다음 명령어를 입력해봐
python manage.py runserver
  • 잘 되었다면 아래와 같이 출력할 것
    • 웹 사이트(http://127.0.0.1:8000/)에서 확인해 보자
    • 로켓이 이륙하는 모습이 담긴 《Congratulations!》 페이지를 보게될 겁니당^^
Performing system checks...

System check identified no issues (0 silenced).

You have unapplied migrations; your app may not work properly until they are applied.
Run 'python manage.py migrate' to apply them.

4월 06, 2021 - 15:50:53
Django version 3.1, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

http://127.0.0.1:8000/

작업을 시작하기 위한 환경(프로젝트)이 세팅 다 되었슴당 ^>^

설문조사 앱(app) 만들기

  • Django 는 앱(app) 의 기본 디렉토리 구조를 자동으로 생성할 수 있는 도구를 제공
    • 작성하는 각 앱(app)는 다음과 같은 관례로 Python 패키지가 구성됨
  • 앱(app)을 생성하기 위해 manage.py가 존재하는 디렉토리에서 명령을 입력하세여 !
python manage.py startapp polls
  • 그에 따라 생긴 디렉토리 구조는, 지금부터 시작할 투표 어플리케이션의 집이 됩니다
polls/
    __init__.py
    admin.py
    apps.py
    migrations/
        __init__.py
    models.py
    tests.py
    views.py

1. view 작성하기

  • polls/views.py를 열어 파이썬 코드를 입력해라

    from django.http import HttpResponse
    
    
    def index(request):
        return HttpResponse("Hello, world. You're at the polls index.")

2. 작성한 polls/view.py를 불러올 polls/urls.py를 작성

  • 작성한 view파일을 호출 하기위해 이 view파일과 연결된 url 파일이 필요하다.**

    • polls 디렉토리 내의 urls.py에 코드 작성해서 연결해야한다
  • 따로 polls 디렉토리에urls.py 파일이 없었기 때문에 touch urls.py로 만들어 주고,

  • polls/urls.py 파일에 아래와 같은 코드를 작성한다.

    from django.urls import path
    
    from . import views
    
    urlpatterns = [
       path('', views.index, name='index'),
    ]
    
     ```
    ### 3. 작성한 `polls/urls.py`를 작성 `mysite/urls.py`와 연결
  • 그리고 나서, 최상위 URLconfmysite/urls.pypolls AppURLconfurlsp.py을 연결해야한다.

    • django.urls.includeimport 하고, urlpatterns 리스트에 include() 함수를 추가합니다
  • mysite/urls.py로 들어가

    from django.contrib import admin
    from django.urls import include, path
    
    urlpatterns = [
      path('polls/', include('polls.urls')),
      path('admin/', admin.site.urls),
  • include() 함수다른 URLconf들을 참조할 수 있도록 도와줍니다.
  • mysiteurls.py 파일
    • path('polls/', include('polls.urls'))를 사용하여 pollsurl을 참조 하도록 했다 !
    • path('polls/', : polls라는 해당 path 를 잡아내고,
    • include('polls.urls')) : include 함수로 polls디렉토리의 url.py파일을 잡아 준거다 !
  • pollsurls.py 파일
    • path('', views.index, name='index')를 사용gksek.
    • path(' '), : 따로 path없고 현재 디렉토리인 polls 내부에서 찾아보자
    • view.index : polls내부의 view.index라는 view파일 내부의 ìndex로 연결시켜준다.
  • pollsviews.py 파일
    • viewsindex 함수
    def index(request):
      return HttpResponse("Hello, world. You're at the polls index.")
    • "Hello, world. You're at the polls index."를 호출해 준다.
  • 결국 Client는 이 메세지를 보게 될것이다 ! ! !!
  • polls 앱(app)에 그 자체의 URLconf(polls/urls.py)존재하는 한, /polls/, 또는 /fun_polls/, /content/polls/와 같은 경로, 또는 그 어떤 다른 root 경로에 연결하더라도, 앱은 여전히 잘 동작할 것입니다.

path() 함수

path() 함수에는 4가지의 인수가 전달 되었다.

  • route: 필수 인수
  • view : 필수 인수
  • kwargs: 선택 가능한 인수
  • name : 선택 가능한 인수

필수 인수 route

***my_site/urls.py
from django.contrib import admin
 from django.urls import include, path
`
 urlpatterns = [
     path('polls/', include('polls.urls')),	# 'polls/' 이부분이 "route" 
     path('admin/', admin.site.urls),
]
  • routeURL patterns을 가진 문자열 입니다.
    • 요청이 처리될 때, Django 는 urlpatterns 의 첫 번째 패턴부터 시작하여, 일치하는 패턴을 찾을 때 까지 요청된 URL 을 각 패턴과 리스트의 순서대로 비교
    • 패턴들은 GET 이나 POST 의 매개 변수들, 혹은 도메인 이름을 검색하지 않습니다.
      • 예를 들어, https://www.example.com/myapp/ 이 요청된 경우, URLconf 는 오직 myapp/ 부분만 바라 봅니다.
      • https://www.example.com/myapp/?page=3 이 요청된 경우, URLconf 는 오직 myapp/ 부분만 신경씁니다.

필수 인수 view

***polls/urls.py
from django.urls import path
from . import views
`
urlpatterns = [
    path('', views.index, name='index'),	# views.index 이부분이 view
] 
  • view 는 Django 에서 일치하는 패턴을 찾으면, HttpRequest 객체를 첫번째 인수로 하고, 경로로 부터 〈캡처된〉 값을 키워드 인수로하여 특정한 view 함수를 호출합니다.

선택 가능한 인수 kargs

  • 임의의 키워드 인수들은 목표한 view 에 사전형으로 전달됩니다. 그러나 이 튜토리얼에서는 사용하지 않을겁니다.

선택 가능한 인수 name

***polls/urls.py
from django.urls import path
from . import views
`
urlpatterns = [
    path('', views.index, name='index'),	# name='index' 이부분이 name
] 
  • URL 에 이름을 지으면, 템플릿을 포함한 Django 어디에서나 명확하게 참조할 수 있습니다.
  • 이 강력한 기능을 이용하여, 단 하나의 파일만 수정해도 project 내의 모든 URL 패턴을 바꿀 수 있도록 도와줍니다.
profile
신승홉니다

0개의 댓글