본문 바로가기

Python_WEB/Tweetme

[Django]Handling Dynamic Routing

728x90

CodingEntrepreneurs Django 강의 정리

re_path>

1. Regular expression을 이용한 고급 path matching

2. 좀더 세밀한 조건 - 예를 들어 특정 문자열 길이를 갖는 문자열 검색 - 으로 검색 하고자 한다면 사용

3. regular expressions 은 the raw string literal syntax 로 선언되어야 합니다 (즉, 다음처럼 '< >' 로 닫혀 있어야 한다

가이드

 

문법>

Symbol Meaning
^ 기술된 text 로 그 문자열이 시작되는지
$ 기술된 text 로 그 문자열이 끝나는지
\d 숫자(0, 1, 2, ... 9) 인지
\w word character 인지. 즉, 대소문자, 숫자, underscore character (_) 로만 구성된 단어인지.
+ 하나 이상의 선행 문자가 있는지. 예를 들어, 하나 이상의 숫자와 매치한다면 \d+.를 하나 이상의 'a' 문자와 매치 한다면  a+
* 매치되는 문자열이 없거나 많은 경우, 예를 들어 매칭이 안되거나 한 단어를 찾고자 할 경우  \w*
( ) 괄호안에 있는 패턴의 일부를 선택할때. 선택된 값은 unnamed parameter 로 view 에게 전달된다. (만일 여러 패턴들이 선택 되었다면 선택된 순서대로 연관된 파라미터로써 전달 될것입니다.
(?P<name>...) (...에 표기된) 패턴을 명명한 variable로 변환합니다(이 경우에는 "name" 입니다). 변환한 이름을 view 에 지정한 이름으로 넘깁니다. 그러므로 당신의 view 에서는 반드시 argument명을 동일하게 해주어야 합니다!
[  ] 집합 set 안에 있는 글자중 한개와 매치 될때. 예를 들어 [abc] 는 'a',혹은 'b' 혹은 'c' 와 매치되는지.  [-\w] 는 '-' 한 글자 인지 혹은 '-'를 포함한 단어와 매치 하는지를 나타냅니다.

 

Http404>

1. 만약 요청된 레코드가 존재하지 않는다면, 제네릭 클래스 기반의 detail view는 Http404 exception 이 저절로 발생

2. 표준 오류 페이지와 HTTP 오류 코드 404를 반환

가이드

 

views.py>

# tweets/views.py

from django.http import HttpResponse, Http404
from django.shortcuts import render

from .models import Tweet

# Create your views here.
def home_view(request, *args, **kwargs):
    # print(args, kwargs)
    return HttpResponse("<h1>Hello World</h1>")


def tweet_detail_view(request, tweet_id, *args, **kwargs):
    # print(args, kwargs)
    try:
        obj = Tweet.objects.get(id=tweet_id)
    except:
        raise Http404
    return HttpResponse(f"<h1>Hello {tweet_id} - {obj.content}</h1>")

 

결과물>

반응형

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

[Django]Our First Template  (0) 2020.07.08
[Django]Dynamic View into REST API Endpoint  (0) 2020.07.01
[Django]Handling Dynamic Routing  (0) 2020.07.01
[Django]Intro to URL Routing and Dynamic Routing  (0) 2020.06.29
[Django]The Tweets Model  (0) 2020.06.28
[Django]Our Roadmap  (0) 2020.06.28