Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Trailing slash is not added when DEBUG is False in Django 1.9

I have a Django 1.9 application, When the DEBUG is true. The application redirects to url with a trailing slash if it was not present. But I am getting a 404 error when the DEBUG is False. I tried adding setting APPEND_SLASH = True, but nothing changed. My setup is nginx + gunicorn + Django 1.9.

Any insights are appreciated. Thank you.

like image 987
Shashi Mishra Avatar asked Sep 17 '25 18:09

Shashi Mishra


1 Answers

Slash appending was moved to response handler in Django 1.9 and is only applied if the response.status_code is 404: https://github.com/django/django/blob/1.9.3/django/middleware/common.py#L113

I've encountered same issue issue and in my case this was caused by my custom 404 view that actually returned HTTP 200. Make sure your 404 view creates responses with 404 status_code.

The reason this behavior doesn't happen with DEBUG = True is that custom 404 is not used when in DEBUG mode.

like image 106
rychlis Avatar answered Sep 19 '25 11:09

rychlis