ACHO.pk devlog

[멋쟁이사자처럼10기] Django url mapping 다루기 본문

멋쟁이사자처럼

[멋쟁이사자처럼10기] Django url mapping 다루기

Acho 2022. 5. 29. 14:29

Django에 대한 학습과 실습을 진행했으니 이제 사이트를 만들어 볼 시간이다.

내가 반복해서 말하지만, 나는 기억을 하고 익히기 위해 계속해서 정리하고 기록하는 것이다. 


이전 강의에서 이미 한 번 했던 내용이므로 간단하게 넘어가도록 하겠다. 

자세한 내용은 https://acho.tistory.com/30 에서 보고 오도록하자.

$ python -m venv 가상환경이름
$ source 가상환경이름/Scripts/activate

$ pip install django

$ django-admin startproject 프로젝트이름

$ python manage.py runserver

URL mapping

 

url를 등록하고 각각의 html를 연결해보자

 

우리가 만든 애플리케이션 내부에 templates 폴더를 생성한 후에 html 파일을 만들어준다. 

<h1>first</h1>

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

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

 

프로젝트 폴더 안에 있는 urls.py 파일에 

from myapp import views

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

 

애플리케이션 폴더 안에 있는 view.py 파일에 함수를 만들어준다.

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

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

  

 

 

to second를 클릭하면 second.html 페이지로 넘어간다. 

 

to first를 클릭하면 first.html 페이지로 넘어간다.


 

어플리케이션을 이용하여 URL 관리하기

 

계층적으로 연결된 URL를 효율적으로 관리하는 방법에 대해 알아보자

 

 

1. 새롭게 어플리케이션을 만들어준 후 settings.py에 등록한다.

2. 새롭게 만든 어플리케이션 폴더 안에 인의적으로 urls.py를 만들어준다.

 

 

3. 우리의 프로젝트 폴더 안에 urls.py 파일에서 아래 코드를 작성한다.

from django.urls import path, include

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

boards/로 시작하는 모든 url은 board.urls에서 관리한다는 의미를 가지고 있다.

 

 

4. board application과 product application의 url를 먼저 셋팅한다.

from django.urls import path
from board import views

urlpatterns = [
    path('', views.board), 
    #사이트주소/boards/ 뒤에 아무것도 입력하지 않았을 때 boards 함수가 실행
    path('first/', views.boardfirst), 
    #사이트주소/boards/first 일 때 boardfirst 함수가 실행
]
from django.urls import path
from product import views

urlpatterns = [
    path('', views.productlist), 
    #사이트주소/products/ 뒤에 아무것도 입력하지 않았을 때 boards 함수가 실행
    path('first/', views.productfirst), 
    #사이트주소/products/first 일 때 productfirst 함수가 실행
]

 

5. 각각의 어플리케이션 폴더 안에 views.py 파일에 아래 코드를 작성한다.

from django.shortcuts import render

# Create your views here.
def board(request):
    return render(request, 'board.html')

def boardfirst(request):
    return render(request, 'boardfirst.html')
from django.shortcuts import render

# Create your views here.
def productlist(request):
    return render(request, 'productlist.html')

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

 

6. 애플리케이션 어플 안에 templates 폴더 생성 후 5번 코드에서의 html 이름과 동일한 이름의 html 파일을 만들어준다.


board 함수
boardfirst 함수
productlist 함수
productfirst 함수

 

Comments