详解django2中关于时间处理策略


Posted in Python onMarch 06, 2019

一、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方法的时候更新为当前时间

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中的__new__与__init__魔术方法理解笔记
Nov 08 Python
在Python中调用ggplot的三种方法
Apr 08 Python
python实现数独算法实例
Jun 09 Python
Python调用ctypes使用C函数printf的方法
Aug 23 Python
Python利用turtle库绘制彩虹代码示例
Dec 20 Python
Python实现多级目录压缩与解压文件的方法
Sep 01 Python
Python While循环语句实例演示及原理解析
Jan 03 Python
Python利用for循环打印星号三角形的案例
Apr 12 Python
python mock测试的示例
Oct 19 Python
Python datetime模块的使用示例
Feb 02 Python
Python基础之常用库常用方法整理
Apr 30 Python
Pygame Rect区域位置的使用(图文)
Nov 17 Python
Django使用AJAX调用自己写的API接口的方法
Mar 06 #Python
Django+Xadmin构建项目的方法步骤
Mar 06 #Python
Python中最大递归深度值的探讨
Mar 05 #Python
Python小进度条显示代码
Mar 05 #Python
Python嵌套式数据结构实例浅析
Mar 05 #Python
Python字典遍历操作实例小结
Mar 05 #Python
Python字典的基本用法实例分析【创建、增加、获取、修改、删除】
Mar 05 #Python
You might like
搜索和替换文件或目录的一个好类--很实用
2006/10/09 PHP
php使用反射插入对象示例分享
2014/03/11 PHP
PHP输出九九乘法表代码实例
2015/03/27 PHP
php猜单词游戏
2015/09/29 PHP
WordPress主题制作之模板文件的引入方法
2015/12/28 PHP
利用javascript实现一些常用软件的下载导航
2009/08/03 Javascript
jquery 插件实现图片延迟加载效果代码
2010/02/06 Javascript
JQuery对class属性的操作实现按钮开关效果
2013/10/11 Javascript
javascript中字符串的定义示例代码
2013/12/19 Javascript
js取整数、取余数的方法
2014/05/11 Javascript
写给小白的JavaScript引擎指南
2015/12/04 Javascript
JS变量中有var定义和无var定义的区别以及es6中let命令和const命令
2017/02/19 Javascript
vue中的自定义分页插件组件的示例
2018/08/18 Javascript
JS算法题之查找数字在数组中的索引位置
2019/05/15 Javascript
微信小程序项目总结之记账小程序功能的实现(包括后端)
2019/08/20 Javascript
微信小程序 自定义复选框实现代码实例
2019/09/04 Javascript
jquery 回调操作实例分析【回调成功与回调失败的情况】
2019/09/27 jQuery
vue实现图片上传到后台
2020/06/29 Javascript
如何利用 JS 脚本实现网页全自动秒杀抢购功能
2020/10/12 Javascript
Python中使用插入排序算法的简单分析与代码示例
2016/05/04 Python
Python3使用requests发闪存的方法
2016/05/11 Python
Python动刷新抢12306火车票的代码(附源码)
2018/01/24 Python
Django中cookie的基本使用方法示例
2018/02/03 Python
python2.6.6如何升级到python2.7.14
2018/04/08 Python
pandas把dataframe转成Series,改变列中值的类型方法
2018/04/10 Python
微软美国官方网站:Microsoft美国
2018/05/10 全球购物
eharmony澳大利亚:网上约会服务
2020/02/29 全球购物
如果NULL和0作为空指针常数是等价的,那我到底该用哪一个
2014/09/16 面试题
大学校园活动策划书
2014/02/04 职场文书
公司总经理工作职责管理办法
2014/02/28 职场文书
毕业生欢送会主持词
2014/03/31 职场文书
安全生产管理责任书
2014/04/16 职场文书
节能标语大全
2014/06/21 职场文书
ktv服务员岗位职责
2015/02/09 职场文书
Python中Selenium对Cookie的操作方法
2021/07/09 Python
SQL实现LeetCode(176.第二高薪水)
2021/08/04 MySQL