Django пользовательский handler404 показывает 404, но дает заголовок 200

От" WPF, Развязанный ", страница 383:

Визуальное тестирование хита может сообщить Вам [приблизительно 1 112] весь Visual с, которые пересекают местоположение, [...] необходимо использовать [...] [VisualTreeHelper.]HitTest метод, который принимает HitTestResultCallback делегат. Перед этой версией HitTest возвраты, делегат вызывается однажды для каждого релевантного Visual, начинающий с самого верхнего и заканчивающийся в самом нижнем.

подпись такого обратного вызова

HitTestResultBehavior Callback(HitTestResult result)

, и это должно возвратиться HitTestResultBehaviour.Continue для получения дальнейших хитов, как показано ниже (от связанной страницы на MSDN):

// Return the result of the hit test to the callback.
public HitTestResultBehavior MyHitTestResult(HitTestResult result)
{
    // Add the hit test result to the list that will be processed after the enumeration.
    hitResultsList.Add(result.VisualHit);

    // Set the behavior to return visuals at all z-order levels.
    return HitTestResultBehavior.Continue;
}

Для получения дополнительной информации, консультируйтесь документация MSDN для VisualTreeHelper.HitTest .

8
задан GerardJP 28 November 2009 в 13:08
поделиться

3 ответа

Я бы использовал render_to_string и HttpResponseNotFound , например return HttpResponseNotFound (render_to_string ('404.html')) .

21
ответ дан 5 December 2019 в 04:39
поделиться

Наконец-то я понял, почему возвращенный код состояния не работает. Вместо установки заголовка сообщения это просто:

response.status_code = 404

Тем не менее, код, предложенный PiotrLegnica, определенно выигрывает по простоте, удобочитаемости и красоте .. Значок все еще стоит;)

С уважением,

Джерард.

12
ответ дан 5 December 2019 в 04:39
поделиться

Почему бы вам просто не использовать исключение Http404?

if request.user.is_authenticated():
    raise Http404
else:
    return HttpResponseRedirect('/login')

Это должно подойти вам.

2
ответ дан 5 December 2019 в 04:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: