黑松山资源网 Design By www.paidiu.com
一、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小时
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方法的时候更新为当前时间
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
黑松山资源网 Design By www.paidiu.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
黑松山资源网 Design By www.paidiu.com
暂无评论...
更新日志
2024年10月07日
2024年10月07日
- 班得瑞原装进口《第五张新世纪专辑:迷雾森林+EP》1CD[APE/CUE分轨][334.2MB]
- 田震.1997-顺其自然(日版)【红星生产社】【WAV+CUE】
- 小虫.1996-想得太美【滚石】【WAV+CUE】
- 谢采妘.2016-邓丽君名曲专辑【丰荣】【WAV+CUE】
- 张含韵.2007-一人一梦【天中文化】【WAV+CUE】
- 蟑螂乐队.1999-帮个忙【福茂】【WAV+CUE】
- 张宇.2001-替身【EMI百代】【WAV+CUE】
- 班得瑞原装进口《第六张新世纪专辑:日光海岸》1CD[APE/CUE分轨][339.5MB]
- 班得瑞原装进口《第七张新世纪专辑:梦花园》1CD[APE/CUE分轨][331.4MB]
- 班得瑞原装进口《第八张新世纪专辑:琉璃湖畔》1CD[APE/CUE分轨][286.4MB]
- 魏如萱.2011-在哪里(EP)【添翼创越】【WAV+CUE】
- 群星.1981-新金曲奖·青年创作园地12合辑(喜玛拉雅复刻版)【歌林】【WAV+CUE】
- 麦洁文.1989-新曲与精丫新艺宝】【WAV+CUE】
- SNH48《薄荷糖 (Mint Candy)》[320K/MP3][33.72MB]
- SNH48《薄荷糖 (Mint Candy)》[FLAC/分轨][78.59MB]