2016-02-02 16 views
7

Theo số documentation, điều này khá đơn giản: tôi chỉ cần xác định handler404. Hiện tại tôi đang làm, trong top urls.py:Làm thế nào để thiết lập đúng cách handler404 tùy chỉnh trong django?

urlpatterns = [ 
    ... 
] 

handler404 = 'myapp.views.handle_page_not_found' 

Ứng dụng này được cài đặt. Quan điểm tương ứng chỉ là (cho lúc này tôi chỉ muốn chuyển hướng đến trang web trong trường hợp của 404):

def handle_page_not_found(request): 
    return redirect('homepage') 

Nhưng điều này không có tác dụng: tiêu chuẩn (debug) 404 trang được hiển thị.

Các tài liệu là một chút mơ hồ:

  • nơi nên handler404 được xác định? Tài liệu nói trong số URLconf nhưng, chính xác ở đâu? Tôi có nhiều ứng dụng, mỗi ứng dụng có urls.py khác nhau. Tôi có thể đặt nó vào bất kỳ trong số đó không? Ở đầu trang URLconf? Tại sao? Tài liệu này ở đâu?
  • điều gì sẽ được xử lý bởi trình xử lý này? Nó sẽ bắt được django.http.Http404, django.http.HttpResponseNotFound, django.http.HttpResponse (với status=404)?
+1

Có gì 'DEBUG' trong cài đặt của bạn? Nếu đó là 'True', bạn có thể đổi nó thành' False' và thấy không? –

+0

@ShangWang: cảm ơn! Thật vậy, đặt nó thành 'False' giải quyết vấn đề. Đây không phải là tài liệu, afaik. – dangonfast

+0

@delavnog - Nó nằm trong [phần báo cáo lỗi] (https://docs.djangoproject.com/en/1.9/howto/error-reporting/#error-reporting) - "Khi DEBUG là Sai, ..." – Sayse

Trả lời

5

Như chúng ta đã thảo luận, thiết lập của bạn là chính xác, nhưng trong settings.py bạn nên thực hiện DEBUG=False. Đó là một tính năng sản xuất nhiều hơn và sẽ không hoạt động trong môi trường phát triển (trừ khi bạn có DEBUG=False trong máy dev của khóa học).

+2

Tôi thay đổi của tôi thành 'Sai' trong chế độ phát triển và vẫn hiển thị các trang lỗi django mặc định. – Rexford

Các vấn đề liên quan