您好,登錄后才能下訂單哦!
一、django中數據模型關于時間字段的認識
1、 DateField
:可以記錄年月日,映射到數據庫是 date
類型
2、 DateTimeField
:可以記錄年月日時分秒,映射到數據庫是 datetime
類型
3、 TimeField
:可以記錄時分秒,映射到數據庫是 time
類型
二、關于 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小時
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.py
中 TIME_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方法的時候更新為當前時間
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。