перенаправить на другую страницу вместо получения ошибки Django standarf 404 - PullRequest
1 голос
/ 07 июля 2010

У меня есть что-то подобное в моем views.py

    instance = get_object_or_404(register,pk=request.user.id)

Теперь, если у этого пользователя нет связанных объектов, я получаю стандартную ошибку django 404 говорят, что совпадений не найдено. то, что я хочу здесь, вместо того, чтобы получать эту ошибку 404, перенаправить ее на другую страницу, скажем "some.html". но я не знаю как. я использую method = "POST" есть ли способ перенаправить его на другую страницу вместо получения ошибки 404

Ответы [ 2 ]

4 голосов
/ 07 июля 2010

используя блок try / Кроме того, вы можете перенаправить, если объект не найден

try:
    instance = register.get(pk=request.user.id)
except register.DoesNotExist:
    return HttpResponseRedirect('url that renders something.html')   

К вашему сведению, определение функции django get_object_or_404 выглядит так docs , если вы подняли Http404 в любой точке функции представления, Django перехватит его и вернет стандартную страницу ошибок для вашего приложения вместе с кодом ошибки HTTP 404. настройка представления ошибок , если вы хотите отобразить пользовательский 404.html на основе переменных контекста

0 голосов
/ 07 июля 2010

В зависимости от общей картины, вы можете посмотреть на django.contrib.flatpages и посмотреть, что они делают. В основном они имеют дело с 404 в промежуточном программном обеспечении, а затем ищут путь, чтобы решить, есть ли что-то, что они могут вернуть. Я использовал варианты этого на нескольких сайтах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...