본문 바로가기
개발일지/Django

Django - 동적 뷰, 라우팅 조작 (어려움)

by 개발에정착하고싶다 2022. 9. 29.

와.. 이번에도 역시나 어렵다.

간신히 따라가면서 이해하는 수준이다.

그래도 놀랍다.

내가 파이썬을 클래스까지 이해하고 소화하기 전엔

이게 도통 뭔말인지 암것도 모르겠었는데

django를 할때만큼은 클래스, 정의함수가 진짜 꽃이구나.. 라는것을 새삼 느낀다.

이걸 모르면 그냥 못하는거구나 싶었다.

 

지금은 따라하는 수준에 그치지만 따라하는 수준을 몇 번더 반복하고나서

소화하고, 활용하는 수준이 올것이란걸 알고있다.

그때까지 따라하고 또 따라하자.

 


# 파일1

my_site > first_app > views.py

 

from django.shortcuts import render
from django.http.response import HttpResponse

# Create your views here.

articles = {
    'sports': 'Sports page',
    'finance': 'Finance page',
    'politics': 'Politica page'
}

'''
def sports_view(request):
    return HttpResponse(articles['sports'])

def finance_view(request):
    return HttpResponse(articles['finance'])
'''

def news_view(request, topic):
    return HttpResponse(articles[topic])

def add_view(request, num1, num2):
    # domain.com/first_app/num1/num2 - > num1+ num2
    # domain.com/first_app/3/4 - > 7
    add_result = num1 + num2
    result = f'{num1}+{num2} = {add_result}'
    return HttpResponse(str(result))

# 파일 2

 

my_site > first_app > urls.py

 

from django.urls import path
from . import views

'''
# domain.com/first_app/simple_view
urlpatterns = [
    path('sports/', views.sports_view),
    path('finance/', views.finance_view)
]
'''

urlpatterns = [
    path('<str:topic>/', views.news_view),
    path('<int:num1>/<int:num2>', views.add_view)
]

# 파일 3

 

my_site > my_site > urls.py

 

"""my_site URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/4.1/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.urls import include, path
    2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.http.response import HttpResponse
from django.urls import path, include
from . import views

urlpatterns = [
    path("admin/", admin.site.urls),
    path('first_app/', include('first_app.urls')),
    path('', views.home_view)
]