2011-07-16 12 views
17

Tôi vừa mới cập nhật cài đặt django của mình từ 1,2 lên 1,3. Trên hệ thống nhà phát triển của tôi, tôi không nhận được bất kỳ cảnh báo nào về các cuộc gọi không được chấp nhận. Nhưng một khi tôi chuyển mã vào máy chủ apache sản xuất của tôi, tôi thấy nhiều thông báo 'DeprecationWarning' trong nhật ký apache của tôi. Vì vậy, làm thế nào để tôi phải gọi máy chủ lưu trữ cho các thư này?làm thế nào để tôi nhận được máy chủ django để hiển thị cho tôi Khấu haoWarnings và các thông báo hữu ích khác?

Hiện nay tôi gọi nó là như thế này:

python manage.py runserver --verbosity 2 
+2

Bạn đang chạy phiên bản python nào? Xem câu trả lời của @ chrisv. – nealmcb

+1

Tôi đã có vấn đề chính xác này trên một MBPro chạy Python 2.7, nhưng cùng một mã chính xác cho thấy các cảnh báo trên một hệ thống khác với Python 2.6. @ chrisv của câu trả lời giải quyết nó và là cách tốt nhất để có được những cảnh báo trở lại. – brianz

Trả lời

0

Lệnh runserver bỏ qua tùy chọn tính cách rườm rà: https://code.djangoproject.com/ticket/15132

tôi khuyên bạn nên thiết lập một logger và hướng đầu ra đến stderr: https://docs.djangoproject.com/en/1.3/topics/logging/

Ví dụ:

import logging 
logger = logging.getLogger('django') # Django's catch-all logger 
hdlr = logging.StreamHandler() # Logs to stderr by default 
formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s') 
hdlr.setFormatter(formatter) 
logger.addHandler(hdlr) 
logger.setLevel(logging.WARNING) 
26

Python 2.7 disables the display of DeprecationWarning by default

Để kích hoạt lại nó, đặt PYTHONWARNINGS biến môi trường để "d":

export PYTHONWARNINGS="d"; ./manage.py runserver 
+1

cho bất kỳ ai trên cửa sổ: nó cũng có thể đặt env var như vậy: "thiết lập PYTHONWARNINGS = d" – tutuDajuju

+0

Đẹp nhất ... điều này rất dễ bỏ qua và nó đã cho tôi một thời gian để theo dõi. Nó cũng được ghi lại trong [tài liệu cảnh báo] (http://docs.python.org/2/library/warnings.html#warning-categories): "Đã thay đổi trong phiên bản 2.7: Ngừng sử dụngWarning bị bỏ qua theo mặc định". – brianz

+1

Ai nói tôi muốn xuất cài đặt này sang phiên trình bao hiện tại của tôi? Tôi chỉ sử dụng: 'PYTHONWARNINGS = d ./manage.py runserver' –

3

Để có máy chủ phát triển của bạn xét nghiệm của bạn thất bại cho DeprecationWarnings để xác định vị trí và sửa chữa chúng , bạn có thể chuyển đổi chúng thành lỗi bằng cách thêm

if settings.DEBUG: 
    import warnings 
    warnings.simplefilter('error', DeprecationWarning) 
# these are less urgent but could also be enabled 
# warnings.simplefilter('error', PendingDeprecationWarning) 

vào url cấp cao nhất của bạn.

Tôi thích cách tiếp cận này vì nó không thành công trong các thử nghiệm và cho phép tôi xác định mã không dùng nữa theo cách tự động.

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