ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 장고 라우팅
    백엔드 : 서버공부/Django 2023. 7. 29. 12:53
    728x90

    어떤 프레임워크를 사용하던간 라우팅을 가장 먼저 하게되는것이 라우팅입니다.

    장코에서는 urls.py가 가장 큰틀의 라우팅을 합니다.

    urls.py를 보면 아래와같은 코드들이 적혀있습니다

    """
    URL configuration for myproject project.
    
    The `urlpatterns` list routes URLs to views. For more information please see:
        <https://docs.djangoproject.com/en/4.2/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.urls import path
    # 
    # 
    
    # 
    # 
    urlpatterns = [
        path('admin/', admin.site.urls),
    ]
    

    아래의 코드는 저희가 사용할 시나리오입니다

    # <http://127.0.0.1/>
    # <http://127.0.0.1/app/>
    
    # <http://127.0.0.1/create/>
    # <http://127.0.0.1/read/1/>
    

    가장 먼저 따져야할 것은 약속을 지키는 것입니다. 즉, urlpatterns라는 것을 반드시 정의해야합니다.

    기본적으로는 관리자 화면인 admin으로 이동하는 경로가 명시되어 있습니다.

    지금은 사용자가 http://127.0.0.1/이것으로 접속 했을때 그 접속을 myapp의 views로 위임해보겠습니다.

    위임하는 방법은 아래의 부분에 적혀있습니다. 즉 현재 urls.py가 아니라 다른 urls.py로 위임하는 방법을 보여주는 것입니다.

    """
    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'))
    """
    

    아래의 부분에 path를 정의해보겠습니다.

    urlpatterns = [
        path('admin/', admin.site.urls),
        path('myapp/',include('myapp.urls'))
    ]
    

    그이후 myproject안에 urls.py를 복사하여 myapp으로 붙여넣기한 후 불필요한 내용을 지워 아래와 같이 만듭니다.

    from django.urls import path
    urlpatterns = [
    ]
    

    사용자가 admin이 아닌 다른 경로로 접속하면 그 접속을 myapp의 urls로 위임하게 됩니다.

    사용자가 path가 없는 경로로 접속했을때, create로 접속했을때, read<id>으로 접속했을때 어떻게 해야하는가를 정의해보겠습니다.

    먼저 views파일에 클라이언트로 정보를 전달하기위한 역할을할 함수를 정의할 것 입니다.

    함수 이름은 index로 정했습니다.

    이 함수는 약속이 있습니다. 첫번째 파라메터의 인자로 요청과 관련된 여러가지 정보가 들어오도록 약속되어있는 객체를 전달해주도록 되어있습니다.

    저는 request라는 파라메터 이름을 적어주었습니다. (관습적으로 request라는 이름을 사용합니다.)

    여기서 처리한 결과를 클라이언트로 보내줄때 return값을 통해 보내주는데 저는 Http를 이용해 응답을하겠다는 의미에서 HttpResponse라는 객체를 이용할 것입니다. 이를 위해서는 HttpResponse를 import해야합니다. 그리고 인자로 전송하고 싶은 값을 적어주시면 됩니다.

    views.py

    from django.shortcuts import render, 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)
    

    사용자가 경로를 입력하고 접속했을때 index라는 함수로 위임하기 위해서는 path('')에 두번째 파라메터 값을 주어야합니다.

    그전에 from myapp import views를 적어줍니다.

    from django.urls import path
    from myapp import views
    urlpatterns = [
        path('', views.index),
        path('create/', views.create),
        path('read/<id>/', views.read)
    ]
    

    위 코드에서 path('read/<id>/', views.read) 이 코드는 <>부분에 가변적인 값이오는것을 명시해 주었습니다.

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

    또한 함수 두번째 파라메터에 id를 받고 HttpResponse('Read!'+id)이렇게 작성하였습니다.

    이제 서버가 잘 접속되는지 확인해보겠습니다.

    먼저 http://127.0.0.1:8000/myapp/에 접속해보겠습니다.

    접속이 잘 되는것을 확인할 수 있습니다.

     

    다음으로는 http://127.0.0.1:8000/myapp/create/에 접속해보겠습니다.

    http://127.0.0.1:8000/myapp/read/1/에 접속해보겠습니다.

    화면에 Read!1이 나타나는것을 확인하였습니다.

    위 코드에서 <>를 통해 read/<id>/을 가변적으로 처리할 수 있게 하였습니다.

    따라서 http://127.0.0.1:8000/myapp/read/3/에 접속해보면

    화면에 Read!3 이 나타나는 페이지에 정상적으로 접속되는 것을 확인할 수 있습니다.

    숫자가아닌 영어로 작성해도 마찬가지로 가변적으로 처리됩니다.

    [http://127.0.0.1:8000/myapp/read/Django/](<http://127.0.0.1:8000/myapp/read/Django/>) 로 접속하게되면

    위 와같은 화면을 확인할 수 있습니다.

     

    라우팅과정을 정리해보면

    read/1 에 접속하게되면 장고는 myproject의 path('myapp/',include('myapp.urls')) 부분으로 가고 여기서 myapp의 urls.py로 이동한 다음, path('read/<id>/', views.read)로 이동한 후 view의 read함수로 위임이 되고 read라는 함수가 실행이 되어서 HttpResponse가 HttpResponse('Read!'+id)를 해서 클라이언트에 보내주게 됩니다.

    장코에서는 urls.py가 가장 큰틀의 라우팅을 합니다.

    urls.py를 보면 아래와같은 코드들이 적혀있습니다

    """
    URL configuration for myproject project.
    
    The `urlpatterns` list routes URLs to views. For more information please see:
        <https://docs.djangoproject.com/en/4.2/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.urls import path
    # 
    # 
    
    # 
    # 
    urlpatterns = [
        path('admin/', admin.site.urls),
    ]
    

    아래의 코드는 저희가 사용할 시나리오입니다

    # <http://127.0.0.1/>
    # <http://127.0.0.1/app/>
    
    # <http://127.0.0.1/create/>
    # <http://127.0.0.1/read/1/>
    

    가장 먼저 따져야할 것은 약속을 지키는 것입니다. 즉, urlpatterns라는 것을 반드시 정의해야합니다.

    기본적으로는 관리자 화면인 admin으로 이동하는 경로가 명시되어 있습니다.

    지금은 사용자가 http://127.0.0.1/이것으로 접속 했을때 그 접속을 myapp의 views로 위임해보겠습니다.

    위임하는 방법은 아래의 부분에 적혀있습니다. 즉 현재 urls.py가 아니라 다른 urls.py로 위임하는 방법을 보여주는 것입니다.

    """
    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'))
    """
    

    아래의 부분에 path를 정의해보겠습니다.

    urlpatterns = [
        path('admin/', admin.site.urls),
        path('myapp/',include('myapp.urls'))
    ]
    

    그이후 myproject안에 urls.py를 복사하여 myapp으로 붙여넣기한 후 불필요한 내용을 지워 아래와 같이 만듭니다.

    from django.urls import path
    urlpatterns = [
    ]
    

    사용자가 admin이 아닌 다른 경로로 접속하면 그 접속을 myapp의 urls로 위임하게 됩니다.

    사용자가 path가 없는 경로로 접속했을때, create로 접속했을때, read<id>으로 접속했을때 어떻게 해야하는가를 정의해보겠습니다.

    먼저 views파일에 클라이언트로 정보를 전달하기위한 역할을할 함수를 정의할 것 입니다.

    함수 이름은 index로 정했습니다.

    이 함수는 약속이 있습니다. 첫번째 파라메터의 인자로 요청과 관련된 여러가지 정보가 들어오도록 약속되어있는 객체를 전달해주도록 되어있습니다.

    저는 request라는 파라메터 이름을 적어주었습니다. (관습적으로 request라는 이름을 사용합니다.)

    여기서 처리한 결과를 클라이언트로 보내줄때 return값을 통해 보내주는데 저는 Http를 이용해 응답을하겠다는 의미에서 HttpResponse라는 객체를 이용할 것입니다. 이를 위해서는 HttpResponse를 import해야합니다. 그리고 인자로 전송하고 싶은 값을 적어주시면 됩니다.

    views.py

    from django.shortcuts import render, 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)
    

    사용자가 경로를 입력하고 접속했을때 index라는 함수로 위임하기 위해서는 path('')에 두번째 파라메터 값을 주어야합니다.

    그전에 from myapp import views를 적어줍니다.

    from django.urls import path
    from myapp import views
    urlpatterns = [
        path('', views.index),
        path('create/', views.create),
        path('read/<id>/', views.read)
    ]
    

    위 코드에서 path('read/<id>/', views.read) 이 코드는 <>부분에 가변적인 값이오는것을 명시해 주었습니다.

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

    또한 함수 두번째 파라메터에 id를 받고 HttpResponse('Read!'+id)이렇게 작성하였습니다.

    이제 서버가 잘 접속되는지 확인해보겠습니다.

    먼저 http://127.0.0.1:8000/myapp/에 접속해보겠습니다.

    접속이 잘 되는것을 확인할 수 있습니다.

    다음으로는 http://127.0.0.1:8000/myapp/create/에 접속해보겠습니다.

    http://127.0.0.1:8000/myapp/read/1/에 접속해보겠습니다.

    화면에 Read!1이 나타나는것을 확인하였습니다.

    위 코드에서 <>를 통해 read/<id>/을 가변적으로 처리할 수 있게 하였습니다.

    따라서 http://127.0.0.1:8000/myapp/read/3/에 접속해보면

    화면에 Read!3 이 나타나는 페이지에 정상적으로 접속되는 것을 확인할 수 있습니다.

    숫자가아닌 영어로 작성해도 마찬가지로 가변적으로 처리됩니다.

    [http://127.0.0.1:8000/myapp/read/Django/](<http://127.0.0.1:8000/myapp/read/Django/>) 로 접속하게되면

    위 와같은 화면을 확인할 수 있습니다.

    라우팅과정을 정리해보면

    read/1 에 접속하게되면 장고는 myproject의 path('myapp/',include('myapp.urls')) 부분으로 가고 여기서 myapp의 urls.py로 이동한 다음, path('read/<id>/', views.read)로 이동한 후 view의 read함수로 위임이 되고 read라는 함수가 실행이 되어서 HttpResponse가 HttpResponse('Read!'+id)를 해서 클라이언트에 보내주게 됩니다.

    장코에서는 urls.py가 가장 큰틀의 라우팅을 합니다.

    urls.py를 보면 아래와같은 코드들이 적혀있습니다

    """
    URL configuration for myproject project.
    
    The `urlpatterns` list routes URLs to views. For more information please see:
        <https://docs.djangoproject.com/en/4.2/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.urls import path
    # 
    # 
    
    # 
    # 
    urlpatterns = [
        path('admin/', admin.site.urls),
    ]
    

    아래의 코드는 저희가 사용할 시나리오입니다

    # <http://127.0.0.1/>
    # <http://127.0.0.1/app/>
    
    # <http://127.0.0.1/create/>
    # <http://127.0.0.1/read/1/>
    

    가장 먼저 따져야할 것은 약속을 지키는 것입니다. 즉, urlpatterns라는 것을 반드시 정의해야합니다.

    기본적으로는 관리자 화면인 admin으로 이동하는 경로가 명시되어 있습니다.

    지금은 사용자가 http://127.0.0.1/이것으로 접속 했을때 그 접속을 myapp의 views로 위임해보겠습니다.

    위임하는 방법은 아래의 부분에 적혀있습니다. 즉 현재 urls.py가 아니라 다른 urls.py로 위임하는 방법을 보여주는 것입니다.

    """
    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'))
    """
    

    아래의 부분에 path를 정의해보겠습니다.

    urlpatterns = [
        path('admin/', admin.site.urls),
        path('myapp/',include('myapp.urls'))
    ]
    

    그이후 myproject안에 urls.py를 복사하여 myapp으로 붙여넣기한 후 불필요한 내용을 지워 아래와 같이 만듭니다.

    from django.urls import path
    urlpatterns = [
    ]
    

    사용자가 admin이 아닌 다른 경로로 접속하면 그 접속을 myapp의 urls로 위임하게 됩니다.

    사용자가 path가 없는 경로로 접속했을때, create로 접속했을때, read<id>으로 접속했을때 어떻게 해야하는가를 정의해보겠습니다.

    먼저 views파일에 클라이언트로 정보를 전달하기위한 역할을할 함수를 정의할 것 입니다.

    함수 이름은 index로 정했습니다.

    이 함수는 약속이 있습니다. 첫번째 파라메터의 인자로 요청과 관련된 여러가지 정보가 들어오도록 약속되어있는 객체를 전달해주도록 되어있습니다.

    저는 request라는 파라메터 이름을 적어주었습니다. (관습적으로 request라는 이름을 사용합니다.)

    여기서 처리한 결과를 클라이언트로 보내줄때 return값을 통해 보내주는데 저는 Http를 이용해 응답을하겠다는 의미에서 HttpResponse라는 객체를 이용할 것입니다. 이를 위해서는 HttpResponse를 import해야합니다. 그리고 인자로 전송하고 싶은 값을 적어주시면 됩니다.

    views.py

    from django.shortcuts import render, 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)
    

    사용자가 경로를 입력하고 접속했을때 index라는 함수로 위임하기 위해서는 path('')에 두번째 파라메터 값을 주어야합니다.

    그전에 from myapp import views를 적어줍니다.

    from django.urls import path
    from myapp import views
    urlpatterns = [
        path('', views.index),
        path('create/', views.create),
        path('read/<id>/', views.read)
    ]
    

    위 코드에서 path('read/<id>/', views.read) 이 코드는 <>부분에 가변적인 값이오는것을 명시해 주었습니다.

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

    또한 함수 두번째 파라메터에 id를 받고 HttpResponse('Read!'+id)이렇게 작성하였습니다.

    이제 서버가 잘 접속되는지 확인해보겠습니다.

    먼저 http://127.0.0.1:8000/myapp/에 접속해보겠습니다.

    접속이 잘 되는것을 확인할 수 있습니다.

    다음으로는 http://127.0.0.1:8000/myapp/create/에 접속해보겠습니다.

    http://127.0.0.1:8000/myapp/read/1/에 접속해보겠습니다.

    화면에 Read!1이 나타나는것을 확인하였습니다.

    위 코드에서 <>를 통해 read/<id>/을 가변적으로 처리할 수 있게 하였습니다.

    따라서 http://127.0.0.1:8000/myapp/read/3/에 접속해보면

    화면에 Read!3 이 나타나는 페이지에 정상적으로 접속되는 것을 확인할 수 있습니다.

    숫자가아닌 영어로 작성해도 마찬가지로 가변적으로 처리됩니다.

    [http://127.0.0.1:8000/myapp/read/Django/](<http://127.0.0.1:8000/myapp/read/Django/>) 로 접속하게되면

    위 와같은 화면을 확인할 수 있습니다.

    라우팅과정을 정리해보면

    read/1 에 접속하게되면 장고는 myproject의 path('myapp/',include('myapp.urls')) 부분으로 가고 여기서 myapp의 urls.py로 이동한 다음, path('read/<id>/', views.read)로 이동한 후 view의 read함수로 위임이 되고 read라는 함수가 실행이 되어서 HttpResponse가 HttpResponse('Read!'+id)를 해서 클라이언트에 보내주게 됩니다.

    장코에서는 urls.py가 가장 큰틀의 라우팅을 합니다.

    urls.py를 보면 아래와같은 코드들이 적혀있습니다

    """
    URL configuration for myproject project.
    
    The `urlpatterns` list routes URLs to views. For more information please see:
        <https://docs.djangoproject.com/en/4.2/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.urls import path
    # 
    # 
    
    # 
    # 
    urlpatterns = [
        path('admin/', admin.site.urls),
    ]
    

    아래의 코드는 저희가 사용할 시나리오입니다

    # <http://127.0.0.1/>
    # <http://127.0.0.1/app/>
    
    # <http://127.0.0.1/create/>
    # <http://127.0.0.1/read/1/>
    

    가장 먼저 따져야할 것은 약속을 지키는 것입니다. 즉, urlpatterns라는 것을 반드시 정의해야합니다.

    기본적으로는 관리자 화면인 admin으로 이동하는 경로가 명시되어 있습니다.

    지금은 사용자가 http://127.0.0.1/이것으로 접속 했을때 그 접속을 myapp의 views로 위임해보겠습니다.

    위임하는 방법은 아래의 부분에 적혀있습니다. 즉 현재 urls.py가 아니라 다른 urls.py로 위임하는 방법을 보여주는 것입니다.

    """
    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'))
    """
    

    아래의 부분에 path를 정의해보겠습니다.

    urlpatterns = [
        path('admin/', admin.site.urls),
        path('myapp/',include('myapp.urls'))
    ]
    

    그이후 myproject안에 urls.py를 복사하여 myapp으로 붙여넣기한 후 불필요한 내용을 지워 아래와 같이 만듭니다.

    from django.urls import path
    urlpatterns = [
    ]
    

    사용자가 admin이 아닌 다른 경로로 접속하면 그 접속을 myapp의 urls로 위임하게 됩니다.

    사용자가 path가 없는 경로로 접속했을때, create로 접속했을때, read<id>으로 접속했을때 어떻게 해야하는가를 정의해보겠습니다.

    먼저 views파일에 클라이언트로 정보를 전달하기위한 역할을할 함수를 정의할 것 입니다.

    함수 이름은 index로 정했습니다.

    이 함수는 약속이 있습니다. 첫번째 파라메터의 인자로 요청과 관련된 여러가지 정보가 들어오도록 약속되어있는 객체를 전달해주도록 되어있습니다.

    저는 request라는 파라메터 이름을 적어주었습니다. (관습적으로 request라는 이름을 사용합니다.)

    여기서 처리한 결과를 클라이언트로 보내줄때 return값을 통해 보내주는데 저는 Http를 이용해 응답을하겠다는 의미에서 HttpResponse라는 객체를 이용할 것입니다. 이를 위해서는 HttpResponse를 import해야합니다. 그리고 인자로 전송하고 싶은 값을 적어주시면 됩니다.

    views.py

    from django.shortcuts import render, 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)
    

    사용자가 경로를 입력하고 접속했을때 index라는 함수로 위임하기 위해서는 path('')에 두번째 파라메터 값을 주어야합니다.

    그전에 from myapp import views를 적어줍니다.

    from django.urls import path
    from myapp import views
    urlpatterns = [
        path('', views.index),
        path('create/', views.create),
        path('read/<id>/', views.read)
    ]
    

    위 코드에서 path('read/<id>/', views.read) 이 코드는 <>부분에 가변적인 값이오는것을 명시해 주었습니다.

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

    또한 함수 두번째 파라메터에 id를 받고 HttpResponse('Read!'+id)이렇게 작성하였습니다.

    이제 서버가 잘 접속되는지 확인해보겠습니다.

    먼저 http://127.0.0.1:8000/myapp/에 접속해보겠습니다.

    접속이 잘 되는것을 확인할 수 있습니다.

    다음으로는 http://127.0.0.1:8000/myapp/create/에 접속해보겠습니다.

    http://127.0.0.1:8000/myapp/read/1/에 접속해보겠습니다.

    화면에 Read!1이 나타나는것을 확인하였습니다.

    위 코드에서 <>를 통해 read/<id>/을 가변적으로 처리할 수 있게 하였습니다.

    따라서 http://127.0.0.1:8000/myapp/read/3/에 접속해보면

    화면에 Read!3 이 나타나는 페이지에 정상적으로 접속되는 것을 확인할 수 있습니다.

    숫자가아닌 영어로 작성해도 마찬가지로 가변적으로 처리됩니다.

    [http://127.0.0.1:8000/myapp/read/Django/](<http://127.0.0.1:8000/myapp/read/Django/>) 로 접속하게되면

    위 와같은 화면을 확인할 수 있습니다.

    라우팅과정을 정리해보면

    read/1 에 접속하게되면 장고는 myproject의 path('myapp/',include('myapp.urls')) 부분으로 가고 여기서 myapp의 urls.py로 이동한 다음, path('read/<id>/', views.read)로 이동한 후 view의 read함수로 위임이 되고 read라는 함수가 실행이 되어서 HttpResponse가 HttpResponse('Read!'+id)를 해서 클라이언트에 보내주게 됩니다.

    장코에서는 urls.py가 가장 큰틀의 라우팅을 합니다.

    urls.py를 보면 아래와같은 코드들이 적혀있습니다

    """
    URL configuration for myproject project.
    
    The `urlpatterns` list routes URLs to views. For more information please see:
        <https://docs.djangoproject.com/en/4.2/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.urls import path
    # 
    # 
    
    # 
    # 
    urlpatterns = [
        path('admin/', admin.site.urls),
    ]
    

    아래의 코드는 저희가 사용할 시나리오입니다

    # <http://127.0.0.1/>
    # <http://127.0.0.1/app/>
    
    # <http://127.0.0.1/create/>
    # <http://127.0.0.1/read/1/>
    

    가장 먼저 따져야할 것은 약속을 지키는 것입니다. 즉, urlpatterns라는 것을 반드시 정의해야합니다.

    기본적으로는 관리자 화면인 admin으로 이동하는 경로가 명시되어 있습니다.

    지금은 사용자가 http://127.0.0.1/이것으로 접속 했을때 그 접속을 myapp의 views로 위임해보겠습니다.

    위임하는 방법은 아래의 부분에 적혀있습니다. 즉 현재 urls.py가 아니라 다른 urls.py로 위임하는 방법을 보여주는 것입니다.

    """
    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'))
    """
    

    아래의 부분에 path를 정의해보겠습니다.

    urlpatterns = [
        path('admin/', admin.site.urls),
        path('myapp/',include('myapp.urls'))
    ]
    

    그이후 myproject안에 urls.py를 복사하여 myapp으로 붙여넣기한 후 불필요한 내용을 지워 아래와 같이 만듭니다.

    from django.urls import path
    urlpatterns = [
    ]
    

    사용자가 admin이 아닌 다른 경로로 접속하면 그 접속을 myapp의 urls로 위임하게 됩니다.

    사용자가 path가 없는 경로로 접속했을때, create로 접속했을때, read<id>으로 접속했을때 어떻게 해야하는가를 정의해보겠습니다.

    먼저 views파일에 클라이언트로 정보를 전달하기위한 역할을할 함수를 정의할 것 입니다.

    함수 이름은 index로 정했습니다.

    이 함수는 약속이 있습니다. 첫번째 파라메터의 인자로 요청과 관련된 여러가지 정보가 들어오도록 약속되어있는 객체를 전달해주도록 되어있습니다.

    저는 request라는 파라메터 이름을 적어주었습니다. (관습적으로 request라는 이름을 사용합니다.)

    여기서 처리한 결과를 클라이언트로 보내줄때 return값을 통해 보내주는데 저는 Http를 이용해 응답을하겠다는 의미에서 HttpResponse라는 객체를 이용할 것입니다. 이를 위해서는 HttpResponse를 import해야합니다. 그리고 인자로 전송하고 싶은 값을 적어주시면 됩니다.

    views.py

    from django.shortcuts import render, 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)
    

    사용자가 경로를 입력하고 접속했을때 index라는 함수로 위임하기 위해서는 path('')에 두번째 파라메터 값을 주어야합니다.

    그전에 from myapp import views를 적어줍니다.

    from django.urls import path
    from myapp import views
    urlpatterns = [
        path('', views.index),
        path('create/', views.create),
        path('read/<id>/', views.read)
    ]
    

    위 코드에서 path('read/<id>/', views.read) 이 코드는 <>부분에 가변적인 값이오는것을 명시해 주었습니다.

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

    또한 함수 두번째 파라메터에 id를 받고 HttpResponse('Read!'+id)이렇게 작성하였습니다.

    이제 서버가 잘 접속되는지 확인해보겠습니다.

    먼저 http://127.0.0.1:8000/myapp/에 접속해보겠습니다.

    접속이 잘 되는것을 확인할 수 있습니다.

    다음으로는 http://127.0.0.1:8000/myapp/create/에 접속해보겠습니다.

    http://127.0.0.1:8000/myapp/read/1/에 접속해보겠습니다.

    화면에 Read!1이 나타나는것을 확인하였습니다.

    위 코드에서 <>를 통해 read/<id>/을 가변적으로 처리할 수 있게 하였습니다.

    따라서 http://127.0.0.1:8000/myapp/read/3/에 접속해보면

    화면에 Read!3 이 나타나는 페이지에 정상적으로 접속되는 것을 확인할 수 있습니다.

    숫자가아닌 영어로 작성해도 마찬가지로 가변적으로 처리됩니다.

    [http://127.0.0.1:8000/myapp/read/Django/](<http://127.0.0.1:8000/myapp/read/Django/>) 로 접속하게되면

    위 와같은 화면을 확인할 수 있습니다.

    라우팅과정을 정리해보면

    read/1 에 접속하게되면 장고는 myproject의 path('myapp/',include('myapp.urls')) 부분으로 가고 여기서 myapp의 urls.py로 이동한 다음, path('read/<id>/', views.read)로 이동한 후 view의 read함수로 위임이 되고 read라는 함수가 실행이 되어서 HttpResponse가 HttpResponse('Read!'+id)를 해서 클라이언트에 보내주게 됩니다.

    '백엔드 : 서버공부 > Django' 카테고리의 다른 글

    장고 읽기 구현 1  (0) 2023.07.29
    장고를 사용하는 이유  (0) 2023.07.29
    장고 앱 만들기  (0) 2023.07.29
    포트의 개념  (0) 2023.07.29
    Python Django Web Framework 설치하기  (0) 2023.07.29
Designed by Tistory.