3 回答

TA貢獻1866條經驗 獲得超5個贊
問題不在于Django設置,而在于傳遞給模型的日期。時區感知對象如下所示:
>>> from django.utils import timezone
>>> import pytz
>>> timezone.now()
datetime.datetime(2013, 11, 20, 20, 8, 7, 127325, tzinfo=pytz.UTC)
這是一個幼稚的對象:
>>> from datetime import datetime
>>> datetime.now()
datetime.datetime(2013, 11, 20, 20, 9, 26, 423063)
因此,如果您將電子郵件日期傳遞到任何地方(并且最終到達某種模型),請使用Django的now()。如果不是,則可能是現有軟件包獲取沒有時區的日期的問題,您可以修補該軟件包,忽略警告或將USE_TZ設置為False。

TA貢獻1829條經驗 獲得超7個贊
使用django.utils.timezone.make_aware函數可讓您的樸素日期時間對象意識到時區并避免這些警告。
它將天真的datetime對象(不帶時區信息)轉換為具有時區信息的對象(如果未將其明確指定為第二個參數,則使用django設置中指定的時區):
import datetime
from django.conf import settings
from django.utils.timezone import make_aware
naive_datetime = datetime.datetime.now()
naive_datetime.tzinfo # None
settings.TIME_ZONE # 'UTC'
aware_datetime = make_aware(naive_datetime)
aware_datetime.tzinfo # <UTC>
- 3 回答
- 0 關注
- 1297 瀏覽
添加回答
舉報