땅지원
땅지원's Personal blog
땅지원
전체 방문자
오늘
어제
  • 전체 (353)
    • Frontend (2)
      • React (2)
    • Backend (90)
      • Java (16)
      • Python (19)
      • Spring (23)
      • Database (21)
      • Troubleshooting (8)
    • DevOps (27)
      • ELK (13)
    • CS (40)
    • OS (2)
      • Linux (2)
    • Algorithm (95)
      • concept (18)
      • Algorithm Problem (77)
    • 인공지능 (25)
      • 인공지능 (12)
      • 연구노트 (13)
    • 수업정리 (35)
      • 임베디드 시스템 (10)
      • 데이터통신 (17)
      • Linux (8)
    • 한국정보통신학회 (5)
      • 학술대회 (4)
      • 논문지 (1)
    • 수상기록 (8)
      • 수상기록 (6)
      • 특허 (2)
    • 삼성 청년 SW 아카데미 (6)
    • 42seoul (12)
    • Toy project (3)
    • 땅's 낙서장 (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • 20.11.6 BB21플러스 온라인 학술대회
  • 20.10.30 한국정보통신학회 온라인 학술대회

인기 글

태그

  • ㅗ
  • D
  • 이것이 리눅스다 with Rocky Linux9
  • E
  • I

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
땅지원

땅지원's Personal blog

Web Framework Django 시작하기(2) - Routing URLConf ★
Backend/Python

Web Framework Django 시작하기(2) - Routing URLConf ★

2022. 1. 10. 20:09

어떤 웹 프레임워크를 사용하던 간에 제일먼저 하게 되는 것은 라우팅이다.

URLconf :  장고에서 URL과 일치하는 뷰를 찾기 위한 패턴들의 집합

 

project의 urls.py을 거쳐서 특정 app로 라우팅을 하게 되면 그 app의 urls.py에서 view안에 있는 특정 함수와 매칭을 시켜서 작업을 수행하게 된다.

 

django-admin startapp myapp

app을 만드는 명령어는 위와 같으며 myapp이라는 app을 생성한다. 

myapp 
  - __init__.py
  - admin.py
  - apps.py
  - models.py
  - tests.py
  - views.py
#myproject - urls.py

from django.contrib import admin
from django.urls import path, include #include 추가


#라우팅 설정
urlpatterns = [
    path('admin/', admin.site.urls), #django가 기본적으로 가지고있는 관리자 화면
    
    #include안에는 위임하려고 하는 app의 이름을 적어준다.
    
    #사용자가 http://127.0.0.1/ 으로 접속하면 myapp의 urls로 위임
    path('',include('myapp.urls')) 
    
    #사용자가 http://127.0.0.1/app/으로 접속하면 myapp2의 urls로 위임
    path('app/',include('myapp2.urls'))
]

 

startapp을 하면 그안에 urls.py는 만들어지지 않기 때문에 따로 만들어줘야한다.

#myapp - urls.py

from django.urls import path
from myapp import views

urlpatterns = [
	path('',views.index), #사용자가 http://127.0.0.1로 들어왔다.
    path('create/',views.create), #http://127.0.0.1/create/
    #path('read/1/',views.read)  #http://127.0.0.1/read/1


    path('read/<id>/',views.read) #가변적으로 처리하기위해 <>이용
]

 

각각의 경로로 접속을 했을때 그것을 views로 전달하려면 어떻게 해야할까?

#myapp - views.py

from django.shortcuts import render,HttpResponse #HttpResponse 추가

# Create your views here.

def index(request):
    return HttpResponse('Welcome!')

def create(request):
    return HttpResponse('create!')

def read(request, id):
    return HttpResponse('read!' + id)

views.py안에 클라이언트로 정보를 전송하는 역할을 하는 함수를 생성해준다.

 

기본적으로 파라미터의 첫번째 인자로 요청과 관련된 여러가지 정보가 들어오도록 약속되어있기 때문에 request라는 변수를 하나 둔다.

 

우리가 처리한결과를 클라이언트로 보내줄때 return값으로 보내주는데 http를 이용해서 응답을 하겠다는 의미에서 HttpRespone객체를 이용한다.

#myapp - urls.py

from myapp import views

path('create/',views.create)

위와같이 함수를 만들고 views에 있는 함수를 끌어오기위해 import를 해준다음 path에 함수를 지정해준다.

 

'http://127.0.0.1/read/1' 와 같이 read 뒤에 가변적인 값이 들어오는건 어떻게 처리를 해줄 수 있을까?

#myapp - views.py
def read(request, id):
    return HttpResponse('read!' + id)
    
#myapp - urls.py
path('read/<id>/,views.read)

위와 같이 <>를 이용하여 가변적인 값에 대한 처리를 해줄 수 있다.

'http://127.0.0.1/read/123' 으로 들어가면 read!123을 return 해주게 되는 것이다.

 

 

 

 

 

 

출처 : https://www.youtube.com/watch?v=QX8CQMycDa0&list=PLuHgQVnccGMDLp4GH-rgQhVKqqZawlNwG&index=4 

https://developer.mozilla.org/ko/docs/Learn/Server-side/Django/Introduction

 

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

Web Framework Django 시작하기(4) - CRUD의 Read  (0) 2022.01.11
Web Framework Django 시작하기(3) - Django에 대해  (0) 2022.01.10
Web Framework Django 시작하기(1) - 프로젝트 생성  (0) 2022.01.08
Python Multithread vs Multiprocessing  (0) 2021.12.29
Python Thread  (0) 2021.12.28
    'Backend/Python' 카테고리의 다른 글
    • Web Framework Django 시작하기(4) - CRUD의 Read
    • Web Framework Django 시작하기(3) - Django에 대해
    • Web Framework Django 시작하기(1) - 프로젝트 생성
    • Python Multithread vs Multiprocessing
    땅지원
    땅지원
    신입 개발자의 우당탕탕 기술 블로그

    티스토리툴바