작성
·
283
0
안녕하세요, 강사님!
위와 같이 instagram 앱 내부의 urls.py에서
re_path(r'(?P<pk>\d{3})/', views.post_detail),
이렇게 re_path함수를 사용하여 localhost:8000/instagram/이후에 3자리만 요청이 가능하도록 해보고 싶은데요.
이렇게 1자리 또는 2자리를 입력하면 정상적으로 오류가 나오는데,
다음과 같이 3자리만 매칭되는 게 아니라, 3자리 이상은 전부 매칭이 되고 있어서 질문을 드려봅니다. 어떤 부분이 문제가 있는걸까요..?
답변 1
1
안녕하세요.
re_path를 쓰실 때에는 정규표현식에서 문자열의 시작과 끝을 명시해주셔야 합니다.
re_path(r'(?P<pk>^\d{3})/$', views.post_detail),
이를 지정하지 않으시면, 부분매칭이 됩니다. 숫자 4자리도 결국 숫자 3자리가 포함된 것이니까 매칭이 된 것입니다.
화이팅입니다. :-)
시작과 끝이 있다는 걸 몰랐네요ㅎㅎ 항상 자세히 알려주셔서 감사합니다:)