본문 바로가기

Python_WEB/Try_Django

[Django]Dynamic URL-based Lookups

반응형

 

CodingEntrepreneurs Django 강의 정리

장고 URL 요청 처리 방식>

1. Django는 사용할 루트 URLconf모듈을 결정합니다.

일반적으로 이 값은 ROOT_FLLCONF설정 값이지만 들어오는 경우HttpRequest개체에는(미들웨어에서 설정한)

urlconf특성이 있으며, 해당 값은 ROOT_URLCONF설정 대신 사용됩니다.

 

2. Django는 Python모듈을 로드하고 변수를 찾습니다.urlpatterns. 이는 django.url.path()및/또는 django.urls.re path()

인스턴스의 시퀀스여야 합니다.

 

3. Django는 각 URL패턴을 순서대로 실행하고, 요청한 URL과 일치하는 첫번째 URL에서 path_info와 일치하도록

중지합니다.

 

4. URL패턴 중 하나가 일치하면 Django가 지정된 보기를 가져와 Python함수(또는 클래스 기반 보기)로 호출합니다.

보기는 다음 인수를 통과합니다. GroupWise/Request의 인스턴스입니다.

일치하는 URL패턴에 이름이 지정된 그룹이 없으면 정규 표현식의 일치 항목이 위치 인수로 제공됩니다.

키워드 인수는 제공된 경로 표현식과 일치하는 이름이 지정된 모든 요소로 구성되며, 선택 사항에 지정된 인수로

재정의됩니다.

kwargsargumentango.url.path()또는 django.urls.re_path경로()에 대한 인수입니다.

 

5. URL패턴이 일치하지 않거나 이 프로세스의 특정 지점에서 예외가 발생한 경우 Django는 적절한 오류 처리 보기를

호출합니다.

 

views>

from django.shortcuts import render

from .models import BlogPost

# Create your views here.


def blog_post_detail_page(request, post_id):
    obj = BlogPost.objects.get(id=post_id)
    template_name = "blog_post_detail.html"
    context = {"object": obj}  # {'title': objecct.title}
    return render(request, template_name, context)

 

urls>

"""try_django URL Configuration
The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/3.0/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, re_path  # url

from blog.views import blog_post_detail_page
from .views import (
    home_page,
    about_page,
    contact_page,
    example_page,
)

urlpatterns = [
    path("", home_page),
    # path("blog/", blog_post_detail_page),
    path("blog/<int:post_id>/", blog_post_detail_page),
    # re_path(r"^blog/(?P<post_id>\w+)/$", blog_post_detail_page),
    path("page", about_page),
    path("pages", about_page),
    re_path(r"^pages?/$", about_page),
    re_path(r"^about/$", about_page),
    path("contact/", contact_page),
    path("example/", example_page),
    path("admin/", admin.site.urls),
]
반응형

'Python_WEB > Try_Django' 카테고리의 다른 글

[Django]get_object_or_404  (0) 2020.06.15
[Django]Handling Dynamic URL Errors  (0) 2020.06.15
[Django] Model in a View  (0) 2020.06.15
[Django]Model to Django Admin  (0) 2020.06.14
[Django]Save to the Database  (0) 2020.06.14