일단 만드는 Django(1)

yoodeit·2022년 6월 9일
2

1. Django 프로젝트 시작하기

기본적으로 처음 프로젝트를 시작할 때는

python3 -m venv myvenv
source myvenv/bin/activate
pip3 install django
pip3 freeze
django-admin startproject practice_url
cd practice_url
python3 manage.py startapp myapp

1) myvenv라는 가상환경을 만들고
2) 그 가상환경을 실행하고
3) 그 가상환경 안에 django를 설치하고
4) 설치된 패키지들의 버전을 확인하고
5) practice_url 이라는 프로젝트를 만들고
6) 그 프로젝트 안으로 들어가
7) myapp이라는 어플리케이션을 생성했다.

어플리케이션을 만들었으므로 settings.py에 들어가
INSTALLED_APPS 리스트에 myapp을 추가해야 한다.
여기서 어플리케이션을 추가하고 쉼표 까먹어서 에러 나는 일이 없도록 해야 한다. 은근 자주 발생하는 오류라.

이후 Myapp에 templates라는 폴더를 추가하고 안에 html 파일을 넣는다. 여기에서는 first.html 파일을 넣었다.

실제로 이 first.html이 나타나도록 해야 하므로 Myapp 어플리케이션의 views.py에 들어가서 first함수를 추가해 준다.
참고로 여기서 Render는 first.html을 화면에 찍어내라는 뜻.

def first(request) :
	return render(request, 'first.html')

2. 라우팅

다음으로는 라우팅을 해 주어야 한다.
전체 urls.py에 다음과 같이 적어준다.

from myapp import views

또한, myapp에 있는 views에 들어 있는 first함수가 작동하도록 경로를 추가해 준다.

urlpatterns = [
	path('admin/', admin.site.urls),
    path('', views.first)
]

second.html 문서에는 a태그로 first.html로의 이동을 지원

<a href="/">to first page</a>

fisrt.html 문서에도 a태그로 second.html로의 이동을 지원

<a href="/second">to second page</a>

그런데 이런식으로 라우팅을 진행하면 너무 비효율적이다.
계층적으로 이루어진 Url을 한꺼번에 다루는 방법이 있다.
그럴 때는 django.urls 에 있는 include를 써볼 수 있다.
따라서 우선적으로 path 옆에 include를 추가해 준다.

from django.urls import path, include

일단 좀 큰 사이트를 제작할 때를 예시로 들고 있으므로 몇 가지 app을 추가적으로 생성하였다.

python3 manage.py startapp product
python3 manage.py startapp board

당연히 자동적으로 settings.py에 애플리케이션 등록 해줘야.

이 다음부터가 이제까지와는 조금 다른데,
board라는 새 어플리케이션 안에 인위적으로 urls.py를 만들어 준다.

그리고 practice_url. 그러니까 전체 urls.py 파일로 돌아와서
include를 활용하여 라우팅을 진행한다.

urlpatterns = [
	path('admin/', admin.site.urls),
    path('', views.first),
    path('second/', views.second),
    path('products/', include('product.urls')),
    path('boards/', include('board.urls')),
]

이것이 무슨 의미냐 하면
앞으로 다음과 같이 products/류는 모두 products app 안에 자체적으로 만든 urls.py에서 관리하겠다는 의미이다.

127.0.0.1:8000/products/1
127.0.0.1:8000/products/2
127.0.0.1:8000/products/3

boards/ 도 마찬가지이다.

127.0.0.1:8000/boards/1
127.0.0.1:8000/boards/2
127.0.0.1:8000/boards/3

이제 board app에 자체적으로 생성한 urls.py로 들어간 다음
필요한 것들만 추려서 import를 하고 path를 추가연결한다.

from django.urls import path
from board import views

urlpatterns = [
    path('', views.board),
]

최종적으로 이러한 상황이 만들어졌다면.

python3 manage.py runserver

라고 입력했을 때, 입력하는 주소에 따라 다음과 같이 구현되어야 정상이다.
일단 주소를 입력하자마자는 아무것도 없을테니 아래와 같은 페이지가.

to second page를 누르면

products를 입력하면

boards를 입력하면

127.0.0.1:8000/products/first/

를 입력하면

이런 식으로 구현이 된다.

include로 관리하는 것 말고, 자동으로 url을 생성하는 방법도 있다고 하니 일단은 include로 application 내에서 url을 관리하는 방법을 배웠다고 생각하면 될 듯 하다.

profile
Yoodeit

0개의 댓글