Django 프레임웍에서 APPEND_SLASH 옵션에 대한 사용법입니다.
Django 에서는 urls.py 에 url 패턴을 정의하는데요. 리퀘스트가 들어오는 url 이 urls.py 에 정의되어 있지 않을 경우 주소 뒤에 슬래쉬를 붙여서 리다이렉트를 시킵니다. 예를 들어 /blog/list 로 접속을 했을 경우 urls.py 에
('^blog/list/$', home_blog.list),
이렇게 blog/list/ 만 정의가 되어 있으므로 Django 는 요청된 url 이 없다고 판단하고 뒤에 슬래쉬를 붙여서 /blog/list/ 로 정의된 url 이 있는지 찾습니다. 위의 경우는 blog/list/ 가 정의되어 있으므로 blog/list/ 로 리다이렉트가 되어서 성공적으로 접속이 됩니다.
이게 문제가 되는 경우가 있는데요. http 와 https 를 같이 쓸 경우 https://www.fun25.co.kr/blog/list 로 접속을 하면 리다이렉트가 http://www.fun25.co.kr/blog/list/ 로 됩니다. 만약 이 페이지가 https 로 접속되어야 하는 페이지라면 문제가 될 수 있습니다. 그래서 settings.py 에
APPEND_SLASH = False
로 설정해 두면 뒤에 슬래쉬를 붙이지 않는데요. 이렇게 되면 blog/list 는 urls.py 에 정의가 되어 있지 않아서 404 Not Found 가 뜹니다. 그래서 urls.py 에
('^blog/list$', home_blog.list),
('^blog/list/$', home_blog.list),
이렇게 슬래쉬가 붙은 주소와 없는 주소를 모두 정의를 해 주어야 합니다. 조금 번거롭기는 하지만 주소를 찾는게 명확해지고 리다이렉트에 대한 문제를 없앨 수 있습니다
'개발 > Django, DRF' 카테고리의 다른 글
DRF-Spectacular을 활용한 Django Swagger 사용법과 예제 코드 가이드 (0) | 2022.11.30 |
---|---|
Django ORM 관련 꼭 봐야할 글 (0) | 2022.10.13 |
[Django] DRF(장고 rest framework)와 REST API (0) | 2022.04.19 |
[Django] Error: That port is already in use. - 해결 방법 (0) | 2022.03.02 |
Django ORM model 정리 (0) | 2022.01.13 |
Django 템플릿에서 newline 을 br 태그로 변경 (0) | 2022.01.12 |