中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

詳解django2中關于時間處理策略

發布時間:2020-09-03 06:40:47 來源:腳本之家 閱讀:184 作者:水痕001 欄目:開發技術

一、django中數據模型關于時間字段的認識

1、 DateField :可以記錄年月日,映射到數據庫是 date 類型

2、 DateTimeField :可以記錄年月日時分秒,映射到數據庫是 datetime 類型

3、 TimeField :可以記錄時分秒,映射到數據庫是 time 類型

二、關于 navie 時間和 aware 時間的認識

navie時間和aware時間

  • navie沒有指定時區的,不知道自己的時間。
  • aware指定了時區,知道自己的時間。

pytz庫:專門用來處理時區的庫,經常更新一些時區的數據

astimezone方法

將一個時區的時間轉換為另一個時區的時間,這個方法只能被'aware'類型的時間調用,

不能被'navie'類型的時間調用

import pytz
from datetime import datetime
now = datetime.now() #這是一個navie類型的時間
utc_timezone = pytz.timezone('UTC') #定義UTC的時區對象
utc_now = now.astimezone(utc_timezone) #將當前時區時間轉換為UTC時區的時間
>> ValueError: astimezone() cannot be applied to a navie datetime
# 會拋出一個異常,原因就是因為navie類型的時間不能調用astimezone方法

now = now.replace(tzinfo=pytz.timezone('Asia/Shanghai'))
utc_now = now.astimezone(utc_timezone)
#這時候就可以進行時區的轉換

#更改時間

三、在 django 中正確的使用時間

1、在 settings.py 中配置

TIME_ZONE = 'Asia/Shanghai' # 時區的選擇
# 如果USE_TZ=False,那么django獲取到的當前時間就是一個navie類型的時間,
# 網上很多資料寫的是設置False,但是實際開發過程中設置True
USE_TZ = True

2、在一個 app 的數據模型中創建時間的字段

from django.db import models


class ArticleModel(models.Model):
 """
 文章的模型
 """
 title = models.CharField(max_length=100, verbose_name='文章標題')
 create_time = models.DateTimeField(verbose_name='文章創建時間')

 class Meta(object):
 db_table = 'article'

 def __str__(self):
 return '<ArticleModel>({}, {})'.format(self.title, self.create_time)

3、在視圖類中手動的添加一條數據

from django.shortcuts import render
from django.views import View
# 引入模塊
from django.utils.timezone import now, localtime
from . import models


class ArticleView(View):
 """
 文章的視圖類
 """

 def get(self, request, *args, **kwargs):
 models.ArticleModel.objects.create(title='第一篇文章', create_time=now())
 return render(request, 'article.html')

4、查看數據庫數據

實際上我這是差不多下午13點了,剛好相差8小時

詳解django2中關于時間處理策略

5、查詢出來的數據使用 localtime 函數轉換為本地時間

from django.shortcuts import render
from django.views import View
# 引入模塊
from django.utils.timezone import now, localtime
from . import models


class ArticleView(View):
 """
 文章的視圖類
 """

 def get(self, request, *args, **kwargs):
 result = models.ArticleModel.objects.get(pk=1)
 print(result)
 print(localtime(result.create_time))
 return render(request, 'article.html')

6、在模板( html )中使用(自己會轉換為你電腦本地時區的時間)

<p>{{ article.title }}</p>
<p>{{ article.create_time }}</p>
<!--直接使用django內置過濾器格式化數據-->
<p>{{ article.create_time | date:"Y-m-d H:i:s" }}</p>

7、如果你在 settings.pyTIME_ZONE = 'Asia/Shanghai' 配置不同的時區,在用戶頁面展示的結果也會不一樣的。

四、在django中數據模型使用時間字段

1、使用字段

create_time = models.DateTimeField(auto_now_add=True, null=True, verbose_name='創建時間')
update_time = models.DateTimeField(auto_now=True, null=True, verbose_name='修改時間')

2、關于auto_now_add的認識

auto_now_add會在第一次添加數據的時候自動獲取當前時間

3、關于auto_now的認識

auto_now會在每次對象調用save方法的時候更新為當前時間

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

祁门县| 遂川县| 清水河县| 敖汉旗| 海丰县| 桐梓县| 磴口县| 中阳县| 商南县| 康定县| 巨野县| 瑞安市| 宁夏| 云林县| 阳西县| 崇阳县| 连江县| 鸡东县| 清新县| 芜湖市| 榕江县| 阿拉善盟| 涿州市| 垫江县| 香港| 珠海市| 洪江市| 兴文县| 贵州省| 清水县| 尼勒克县| 沙雅县| 尼玛县| 乌恰县| 六枝特区| 南丹县| 文昌市| 长乐市| 宣恩县| 内乡县| 文水县|