Đây là một cải tiến về câu trả lời của Yuji, cung cấp một ngăn xếp, hướng dẫn thêm (đối với chúng tôi django newbies) và đơn giản hơn.
Đặt mã này vào một tệp ở đâu đó trong ứng dụng của bạn, ví dụ: PROJECT_ROOT/MAIN_APP/middleware/exceptions.py
và đảm bảo bạn có một số trống __init__.py
trong cùng một thư mục.
import traceback
from django.http import HttpResponse
class PlainExceptionsMiddleware(object):
def process_exception(self, request, exception):
return HttpResponse(traceback.format_exc(exception), content_type="text/plain", status=500)
Bây giờ, hãy chỉnh sửa settings.py
và tìm MIDDLEWARE_CLASSES = (
. Thêm một mục nhập khác để nó giống như thế này:
MIDDLEWARE_CLASSES = (
# (all the previous entries)
# Plain text exception pages.
'MAIN_APP.middleware.exceptions.PlainExceptionsMiddleware',
)
Khởi động lại django và bạn tốt!
Định dạng nhận dạng tác nhân người dùng.
Nếu bạn thích tôi và phát triển một ứng dụng và trang web đều được hỗ trợ bởi django, bạn có thể muốn hiển thị các trang lỗi văn bản đơn giản và ứng dụng được định dạng tốt cho trình duyệt. Một cách đơn giản để đến đó là để kiểm tra các đại lý người dùng:
import traceback
from django.http import HttpResponse
class PlainExceptionsMiddleware(object):
def process_exception(self, request, exception):
if "HTTP_USER_AGENT" in request.META and "chrome" in request.META["HTTP_USER_AGENT"].lower():
return
return HttpResponse(traceback.format_exc(exception), content_type="text/plain", status=500)
Tác phẩm này, cảm ơn. Vấn đề bây giờ là truy cập theo dõi ngăn xếp, bởi vì "ngoại lệ" chỉ là một đối tượng Ngoại lệ thông thường. – simao
Xin chúc mừng! Nhìn vào 'sys.exc_info()' để truy cập vào truy nguyên. Tôi đề nghị tìm kiếm trực tiếp tại mã django mà không định dạng traceback bình thường trong 'django.core.handlers.base' để thực hiện phiên bản của riêng bạn. –
Vâng, hoạt động. cảm ơn. – simao