2011-12-14 1 views
4

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

Я ищу что-то вдоль линий:

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

Но выше не работает. Возможно ли это?

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

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

ответ

2

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

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

from django.views.defaults import page_not_found 

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

Начиная с Django 1.9, то page_not_found вид в настоящее время «принимает второй параметр, исключение, которое инициировало ошибку.» Поэтому решение, предложенное выше Christoffer, требует незначительных изменений:

from django.views.defaults import page_not_found 

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

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

+1

Ваше решение может быть улучшено с помощью исключения 'django.http.Http404' вместо общего« Исключения » – mrnfrancesco