最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解Django 中是否使用時區(qū)的區(qū)別

 更新時間:2018年06月14日 14:21:00   作者:棲遲于一丘  
本篇文章主要介紹了詳解Django 中是否使用時區(qū)的區(qū)別,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

起步

在 Django 的模型中新加了一個日期的字段:

import datetime
class Instance(models.Model):
  ...
  start_time = models.DateTimeField(default=datetime.datetime.now)

同步到數(shù)據(jù)庫時 Django 報出了一個警告:

django/db/models/fields/__init__.py:1423: RuntimeWarning: DateTimeField Instance.start_time received a naive datetime (2018-06-14 08:59:54.761510) while time zone support is active.

這個意思是應(yīng)用中開啟了時區(qū)功能,而字段中卻使用了 naive datetime 。我看了配置文件確實啟用的時區(qū)的功能:

TIME_ZONE = 'Asia/Shanghai'
USE_TZ = True

如果設(shè)置了使用時區(qū),那么Django在數(shù)據(jù)庫中以 UTC 存儲日期時間信息。

要想知道時區(qū)的 Django 中的作用,我們要先了解時間有時區(qū)的沒有時區(qū)的區(qū)別。

帶時區(qū)與不帶時區(qū)

日期時間存在兩個概念: naive time 和 aware time 。 naive time 就是不帶時區(qū)的時間, aware time 則是帶時區(qū)的時間。比方說, datatime.datetime.utcnow() datatime.datetime.now() ,前者是 UCT 時間,后者會取機器上的本地時間,這兩者呢,對于 django 來說,都是不帶時區(qū)的時間(下一段會講原因);而使用 django.utils.timezone.now() 才是帶時區(qū)的時間(aware time)。

datetime.datetime.now() 輸出永遠(yuǎn)都是本地時間,與配置沒有任何關(guān)系。 datatime.datetime.utcnow() 則是當(dāng)前的UTC日期和時間, datetime 模塊是 python 的標(biāo)準(zhǔn)庫,盡管 datetime.datetime 對象有一個 tzinfo 屬性可以用來存儲時區(qū)信息。除非該對象設(shè)置了 tzinfo 屬性,否則統(tǒng)統(tǒng)會被 django 認(rèn)為是 naive time 。判斷可以通過 is_naive() 來判斷:

import datetime
from django.utils import timezone

print(timezone.is_naive( datetime.datetime.now() ))  # False
print(timezone.is_naive( datetime.datetime.utcnow() )) # False

顯然 now() 和 utcnow() 都是沒有設(shè)置 tzinfo 的。

django判斷日期對象是否是原生的唯一標(biāo)準(zhǔn)就是該對象是否設(shè)置了 tzinfo

datetime 與 timezone

datetime 是標(biāo)準(zhǔn)庫的模塊, timezone 是 django 提供的時區(qū)的工具, timezone 其實是在 datetime 基礎(chǔ)上進(jìn)行的整合的,比方 django 中的 now 函數(shù):

[timezone.py]
def now():
  """
  Return an aware or naive datetime.datetime, depending on settings.USE_TZ.
  """
  if settings.USE_TZ:
    # timeit shows that datetime.now(tz=utc) is 24% slower
    return datetime.utcnow().replace(tzinfo=utc)
  else:
    return datetime.now()

返回的其實也是一個 datetime 對象。

設(shè)置了 USE_TZ=True 之后

設(shè)置了 USE_TZ=True 之后,model 里面認(rèn)為 DateTimeField 使用的是UTC時間(帶時區(qū)的時間),這時用 datetime.datetime.now() 獲取的時間是不帶時區(qū)的就會報最開始說的那個警告。

并且呢, 所有的存儲和內(nèi)部處理,全部都是 UTC 時間 ,包括 timezone.now() ,存儲也就是指數(shù)據(jù)庫中存儲的是UTC時間,也就只有在表單輸入或模板渲染輸出的時候,才會執(zhí)行 UTC 到時區(qū)的轉(zhuǎn)換?;緦τ陂_發(fā)者而言,基本不用考慮本地時間的存在,所有的使用都是 UTC 時間,這也能避免手殘的手動轉(zhuǎn)換,盡量使用 Django 系統(tǒng)代勞。

USE_TZ=False 則所有關(guān)于時間和時區(qū)的問題都有開發(fā)人員自己把控。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python干貨實戰(zhàn)之八音符醬小游戲全過程詳解

    Python干貨實戰(zhàn)之八音符醬小游戲全過程詳解

    讀萬卷書不如行萬里路,只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用Python實現(xiàn)一個八音符醬小游戲,大家可以在過程中查缺補漏,提升水平
    2021-10-10
  • python中stdout輸出不緩存的設(shè)置方法

    python中stdout輸出不緩存的設(shè)置方法

    這篇文章主要介紹了python中stdout輸出不緩存的設(shè)置方法,這個方法只在比較特殊的環(huán)境中使用,需要的朋友可以參考下
    2014-05-05
  • python最常用的三種輸出格式解讀

    python最常用的三種輸出格式解讀

    這篇文章主要介紹了python最常用的三種輸出格式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Pyspark讀取parquet數(shù)據(jù)過程解析

    Pyspark讀取parquet數(shù)據(jù)過程解析

    這篇文章主要介紹了pyspark讀取parquet數(shù)據(jù)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-03-03
  • python生成lmdb格式的文件實例

    python生成lmdb格式的文件實例

    今天小編就為大家分享一篇python生成lmdb格式的文件實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • Python3實現(xiàn)定時任務(wù)的四種方式

    Python3實現(xiàn)定時任務(wù)的四種方式

    Python實現(xiàn)定點與定時任務(wù)方式比較多,找到下面四中實現(xiàn)方式,每個方式都有自己應(yīng)用場景;下面來快速介紹Python中常用的定時任務(wù)實現(xiàn)方式,一起看看吧
    2019-06-06
  • Python反射的用法實例分析

    Python反射的用法實例分析

    這篇文章主要介紹了Python反射的用法,結(jié)合實例形式分析了Python反射機制所涉及的幾個常用方法與相關(guān)使用技巧,需要的朋友可以參考下
    2018-02-02
  • 詳解用python計算階乘的幾種方法

    詳解用python計算階乘的幾種方法

    這篇文章主要介紹了詳解用python計算階乘的幾種方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • python實現(xiàn)圖片中文字分割效果

    python實現(xiàn)圖片中文字分割效果

    這篇文章主要為大家詳細(xì)介紹了python實現(xiàn)圖片中文字分割效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • Python元組操作實例分析【創(chuàng)建、賦值、更新、刪除等】

    Python元組操作實例分析【創(chuàng)建、賦值、更新、刪除等】

    這篇文章主要介紹了Python元組操作方法,結(jié)合具體實例形式分析了Python中元組的創(chuàng)建、賦值、更新、刪除等操作實現(xiàn)方法與相關(guān)注意事項,需要的朋友可以參考下
    2017-07-07

最新評論

洞头县| 本溪市| 碌曲县| 微山县| 西青区| 邵东县| 泸州市| 绥滨县| 友谊县| 晋中市| 宣武区| 兴海县| 科技| 平江县| 偏关县| 凤庆县| 长沙市| 大庆市| 自贡市| 博湖县| 博野县| 长乐市| 长岛县| 雅江县| 普格县| 安仁县| 和龙市| 芷江| 龙海市| 卫辉市| 乐亭县| 哈巴河县| 资溪县| 登封市| 沂水县| 安康市| 中方县| 大名县| 平原县| 鲁甸县| 尼玛县|