기타/기타 잡다한 것들

파이썬 장고(Django) 에서 URL 로 매개변수 넘기기(GET방식)

제주도소년 2018. 10. 24. 19:45

파이썬 장고(Django) 에서 URL 로 매개변수 넘기기(GET방식)

파이썬의 장고 프레임워크에서 네이버의 검색을 보면

https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=1&ie=utf8&query=부산외대

와 같이 URL에서 매개변수를 보낼 수 있습니다.


파이썬 장고에서의 방법은 아래와 같습니다.


1. URL 매핑(urls.py)

1
2
3
4
5
6
7
8
from django.contrib import admin
from django.urls import path, include
from FristApp.views import *
 
urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('FristApp.urls')),
]
cs


일단 프로젝트의 urls.py 에서 path를 공백으로 하였습니다. 즉 장고 서버를 실행하고 http://127.0.0.1:8000/ 요청을 하면 FristApp 의 urls.py를 포함시켰기 때문에, FristApp에 urls로 이동하게 됩니다.


2. FristApp URL 매핑(urls.py)

1
2
3
4
5
6
from django.urls import path
from . import views
 
urlpatterns = [
    path('<word>/', views.test),
]
cs


그리고 Include 된 FristApp의 urls.py 에서는 <word>/ 가 존재하는데 http://127.0.0.1:8000/<word>/ 라고 생각하시면 될 것입니다. word의 데이터 타입은 str 입니다. 즉 문자열이죠, 장고에서는 더불어 더 많은 포맷을 제공합니다. 자세한 내용은 https://docs.djangoproject.com/en/2.1/topics/http/urls/ 공식 문서인 장고홈페이지를 참고하시면 될 것 같습니다.


3. FristApp의 views.py

1
2
def test(request, word):
    return HttpResponse("넘어온 데이터 : "+word)
cs

 

urls.py 에서 views.py 의 test 로 매핑을 하였습니다. 당연히 매개변수를 넘겨줬으니 받아야 되기 때문에 test의 매개변수로는 word 가 들어갑니다. 여기서 path 의 변수명을 word 로 지정했기 때문에 test 함수에서도 매개변수 명을 똑같이 해야 합니다. 그러지 않으면 Type 에러를 발생시킵니다.


4. 테스트 및 결과 확인


위와 같이 넘어온 데이터를 확인 할 수가 있습니다.

만약  http://127.0.0.1:8000/ 만 요청했으면 아래와 같이 찾을 수 없다는 404 에러가 발생합니다.