Django的建站的(。・・)ノ゙

author: Ian

Django 建站的一些东西#

http server/client

一些问题#

使用字体 zh-cn时如果报错:#

OSError: No translation files found for default language zh-cn.

LANGUAGE_CODE = 'zh-Hans'
TIME_ZONE = 'Asia/Shanghai'
# zh-Hans是简体中文 zh-Hant是繁体中文

# 如果数据库有UTC的时间,那么可以设置:
# USE_TZ = True 改为
USE_TZ = False

时区问题#

python3.8/site-packages/django/db/models/fields/init.py:1416: RuntimeWarning: DateTimeField {DATABASEMODEL}.update_time received a naive datetime (2023-09-14 21:55:56) while time zone support is active. warnings.warn(“DateTimeField %s received a naive datetime (%s)”

这个警告是由于在使用带有时区支持的DateTimeField字段时,传入了一个没有时区信息的datetime对象。要修复这个警告,你可以将传入DateTimeField字段的datetime对象转换为带有时区信息的datetime对象。

有两种方法可以解决这个问题:

  1. 使用带有时区信息的datetime对象:确保在创建datetime对象时,使用正确的时区信息。你可以使用pytz库来设置时区信息,例如:
from datetime import datetime
import pytz

# 创建带有时区信息的datetime对象
naive_datetime = datetime(2023, 9, 14, 21, 55, 56)
timezone = pytz.timezone("Asia/Shanghai")
aware_datetime = timezone.localize(naive_datetime)

# 将带有时区信息的datetime对象传递给DateTimeField字段
ScannerDevice.update_time = aware_datetime
  1. 将DateTimeField字段的auto_nowauto_now_add属性设置为True:这将自动将字段的值设置为当前的带有时区信息的datetime对象。例如:
from django.db import models

class DATABASEMODEL(models.Model):
    update_time = models.DateTimeField(auto_now=True)

通过以上两种方法之一,你可以修复这个警告并确保正确处理时区信息。