Подтвердить что ты не робот

URL-адрес google Django без нарушения APPEND_SLASH

У меня есть запись в моем urls.py, которая действует как catch-all, которая загружает простой вид, если находит соответствующую базу данных в базе данных. Проблема с этим подходом заключается в том, что решатель URL никогда не будет терпеть неудачу, что означает, что функциональность APPEND_SLASH не будет входить - что мне нужно.

Я бы предпочел не прибегать к добавлению префикса к статическим URL-адресам страницы, чтобы он не был уловкой. Я знаю о flatpages, который использует крюк 404, а не запись в urls.py, и я надеялся избежать использования этого, но я думаю, эта проблема может быть именно той причиной, по которой ее можно было бы использовать.

В любом случае обойти эту проблему, или я должен просто сдавать и использовать flatpages?

4b9b3361

Ответ 1

Убедитесь, что ваш URL-адрес уловленного URL-адреса имеет косую черту в конце и что шаблон является последним в вашем URL-интерфейсе. Если шаблон catch-all не заканчивается косой чертой, тогда он будет соответствовать паразитным URL-адресам до того, как промежуточное ПО попытается добавить косую черту.

Например, используйте r'^.*/$' вместо r'^.*' как ваш последний шаблон.

Чтобы сделать то же самое, но передайте url в качестве именованного аргумента, используйте r'^(?P<url>.*)/$'.

Ответ 2

Утверждение, если он находит соответствующую статическую страницу в базе данных, кажется, что ваши статические страницы не совсем статичны, вы либо передаете свои ссылки через urls.py(как и сейчас), либо извлекаете эти страницы из DB, поместите их в каталог и настройте этот каталог как один для обслуживания статических файлов