Я пытаюсь отправить простую почту с помощью IPython. Я не настроил какие-либо модели, все еще получая эту ошибку. Что можно сделать?
Ошибка: /home/sourabh/Django/learn/local/lib/python 2.7/site-packages/django/db/models/fields/ init.py:827: RuntimeWarning: DateTimeField получил наивное datetime ( 2013-09-04 14: 14: 13.698105), в то время как поддержка часовых поясов активна. RuntimeWarning)
Пробовал: первым шагом будет добавить USE_TZ = True
в ваш файл настроек и установить pytz
(если возможно).
Ошибка:
(learn)sourabh@sL:~/Django/learn/event$ python manage.py shell
/home/sourabh/Django/learn/local/lib/python2.7/site-packages/django/db/backends/sqlite3/base.py:53: RuntimeWarning: SQLite received a naive datetime (2013-09-05 00:59:32.181872) while time zone support is active.
RuntimeWarning)
Проблема не в настройках 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.
Используйте функцию 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>
here doc о проблеме, с которой вы столкнулись Часовой пояс и приборы
Просто исправить ошибку, чтобы установить текущее время
from django.utils import timezone
import datetime
datetime.datetime.now(tz=timezone.utc) # you can use this value
tzinfo=<UTC>
, что такое<UTC>
? Это не синтаксическая конструкция, которую я видел.