티스토리 뷰

Python/Django

Django 튜토리얼 part.1

cvcvcx9 2023. 5. 2. 20:25

설문조사 어플리케이션

설문조사 어플리케이션을 작성한다.

두 파트로 구성되어있다.

  • 사람들이 접근하여 직접 투표할 수 있는 사이트
  • 관리자가 설문을 관리할 수 있는 관리용 사이트

python -m django --version # 장고 버전 확인가능

  1. 프로젝트 작성
  1. 개발 서버
  1. 설문조사 앱 만들기
  1. 뷰 작성하기

1. 프로젝트 작성

cd {프로젝트를 생성하기 원하는 디렉토리} # cd /Users/Username/Desktop/Django
django-admin startproject {생성하고 싶은 프로젝트 이름}
# django-admin startproejct mysite

위 명령어를 작성하게 되면 아래와 같은 파일들이 아래의 구조대로 생성이 됨

mysite/
    manage.py
    mysite/
        __init__.py
        settings.py
        urls.py
        asgi.py
        wsgi.py

mysite가 두 개 존재하는 것을 볼 수 있다. 상위에 있는 디렉토리 mysite는 이름 변경해도 상관이 없는데 하위에 있는 디렉토리는 이름을 변경하지 않는 것을 추천한다. (바꿔야하는 설정이 많음)

  • mysite/ : 최상위 디렉토리 (장고와 아무 상관이 없는 위치라 이름 변경 해도됨)
  • manage.py : Django프로젝트를 실행시키고, 데이터베이스에 접근하는 명령어 등의 유틸리티
  • mysite/ : 하위 디렉토리 (이름변경하면안됨) 이 디렉토리 내의 이름을 이용해서 프로젝트 어디서든 Python 패키지 임포트 가능
  • mysite/—init—.py : 이 파일이 속해있는 디렉토리를 패키지처럼 다루라고 알려주는 빈 파일
  • mysite/settings.py : 현재 Django 프로젝트의 환경 및 구성을 저장
  • mysite/urls.py : 현재 Django프로젝트의 URL 선언을 저장(스프링으로 치면 컨트롤러)
  • mysite/asgi.py : 배포를 위한 파일 (asgi 방식)
  • mysite/wsgi.py : 배포를 위한 파일 (wsgi 방식)

2. 개발 서버

최상위 디렉토리로 이동후 아래와 같은 명령어 입력

python manage.py runserver

아래와 같은 출력이 나올것

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월 28, 2023 - 15:50:53
Django version 4.2, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

일단 공식문서에서 migrate 관련은 무시하고 진행하라고 나와있으니 그대로 진행 (데이터베이스 관련임)

이후 크롬에서 http://127.0.0.1:8000을 입력해서 접속하면 환영 화면이 뜸

위와 같은 화면이 떴다면 정상적으로 서버가 띄워진것임

참고로 아래와 같은 명령어로 포트와 아이피를 변경할 수 있음

python manage.py runserver 8080 # 8080포트로 서버 열기
python manage.py runserver 0.0.0.0:8080 # IP접근가능하게 변경
  • 기본적으로 제공되는 127.0.0.1과 같은경우, 다른 시스템에서 액세스 불가능
  • 네트워크의 다른 시스템에서 개발 서버를 볼 수 있게 하려면 0.0.0.0 으로 접근가능한 IP로 변경해주어야함
  • runserver는 요청이 들어롤 때마다 Python 코드를 자동으로 다시 불러와줌. 하지만 완벽하진 않기 때문에 가끔 서버를 끄고 다시 기동해야 될 때가 있음(파일 추가라던가..)

3. 설문조사 앱 만들기

  • 장고는 하나의 프로젝트에 여러개의 앱을 둘 수 있음. 이 앱들은 다른 프로젝트에서 재사용이 가능함
  • 이런 앱들을 구조적으로 자동생성 가능함
python manage.py startapp polls

위 명령어를 실행하면 아래와 같은 디렉토리가 최상위 디렉토리 하위에 생성됨

polls/
    __init__.py
    admin.py
    apps.py
    migrations/
        __init__.py
    models.py
    tests.py
    views.py

4. 뷰 작성하기

  1. views.py 파일에 코드 작성
  1. 새로 만든 앱 디렉토리에 urls.py 생성 및 새로 만든 뷰 등록
  1. mysite/urls.py 파일에서 새로 만든 urls.py 추가
  1. 잘 동작하는지 확인

1. views.py에 코드작성

from django.http import HttpResponse


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

2. urls.py 앱디렉토리에 생성

  • polls 디렉토리에는 urls.py가 없다. 생성해준다.
  • 뷰와 url을 연결하기 위한 파일이다. (프로젝트의 디렉토리에는 이미 생성되어있음)
  • 아래와 같이 작성한다.
from django.urls import path

from . import views

urlpatterns = [
    path("",views.index,name="index")
]

3. mysite/urls.py 파일에서 새로 만든 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를 통해 url을 연결하면, polls앱에 urls.py가 있는 한, 어떻게 url을 변경하도 동작한다

  • “polls/”, “fun_pollls/” 등 원하는 url경로를 만들 수 있다

4. 잘 동작하는지 확인

이후 크롬 주소창에 http://127.0.0.1/polls/ 를 입력하면 우리가 생성한 view페이지가 보인다.

path() 함수

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

route

  1. routeurl을 정하는 인수 - urlpatterns의 첫 번째 부터 찾음. 일치하는 패턴을 찾을 때까지 요청된 url을 비교함
  1. 도메인 이름이나, GET, POST의 매개변수 이런거 신경안쓰고, url의 뒷부분만 신경씀 https://www.exam.com/myapp/이 요청되었으면 myapp/ 부분만 신경쓴다는 소리임

view

  1. 일치하는 패턴을 찾으면 HttpRequest 객체를 첫번째 인수로 하고, 경로로부터 받은 값을 키워드인수로 특정한 뷰함수를 호출함

kwargs

키워드 인수 (사용자가 임의로 전달할 수 있는 인수) 뷰에 사전형으로 전달됨

name

url에 이름을 지으면 어디에서나 이 url에 연결된 뷰를 참조할 수 있게됨(또는 연결할 수 있게됨)


Uploaded by N2T

'Python > Django' 카테고리의 다른 글

Django 클래스기반 뷰에서 쿼리셋 조작하기  (0) 2023.05.03
Django 튜토리얼 part.2  (0) 2023.05.02
Django 공식문서 튜토리얼 공부  (0) 2023.05.02
OneToOneField  (0) 2023.04.28
Django Reverse_name  (0) 2023.04.28
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함