Поднимите Http404 в шаблоне URL - PullRequest
4 голосов
/ 15 декабря 2011

Я пытаюсь переопределить URL в django-профилях, чтобы поднять 404 вместо перехода к представлению.

Я ищу что-то вроде:

url(r'^profiles/$', lamdba x: raise Http404)

Но вышесказанное не работает.Возможна ли такая вещь?

Я знаю, что могу написать новое представление, которое поднимает 404, но я бы не хотел, если бы я мог сделать это непосредственно в шаблоне URL.

edit: В частности, я получаю invalid syntax (urls.py, line 29) с приведенным выше примером.

Ответы [ 3 ]

10 голосов
/ 15 декабря 2011

Просто используйте вид django.views.defaults.page_not_found.

9 голосов
/ 04 марта 2017

Начиная с Django 1.9 , представление page_not_found теперь "принимает второй параметр, исключение, которое вызвало ошибку". Таким образом, решение, предложенное выше Кристоффером, требует небольшого изменения:

from django.views.defaults import page_not_found

urlpatterns = patterns('',
  url(r'^profiles/$', page_not_found, {'exception': Exception('Not Found')}),
)

Надеюсь, это поможет.

2 голосов
/ 27 февраля 2015

Рабочий пример ..

В вашем urls.py добавьте:

from django.views.defaults import page_not_found

urlpatterns = patterns('',
    url(r'^profiles/$', page_not_found),
)
...