详解django2中关于时间处理策略
作者:水痕001 发布时间:2021-09-09 23:13:09
一、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方法的时候更新为当前时间
来源:https://juejin.im/post/5c7e1734f265da2dc2320a30


猜你喜欢
- 本文实例讲述了JavaScript实现为input与textarea自定义hover,focus效果的方法。分享给大家供大家参考。具体如下:
- VUE动态绑定类名和样式1、使用v-bind属性绑定class和style属性2、动态类名两种方式:对象形式:给对象属性赋boolean类型
- 在循环对象和函数对象中,我们了解了循环器(iterator)的功能。循环器是对象的容器,包含有多个对象。通过调用循环器的next()方法 (
- 1、安装scikit-learn1.1Scikit-learn 依赖Python (>= 2.6 or >= 3.3),NumP
- 很久没有跟其他人做重构思想方面的交流了,可能大家都觉得不太好意思讨论,特别是“分离”的思想这么基础的话题,拿出来说怕会被“笑话”。做为页面重
- 主键的生成方式主要有三种: 一. 数据库自动生成 二. GUID 三. 开发创建 严格讲这三种产生方式有一定的交叉点,其定位方式将在下面进行
- pandas中iloc()函数DataFrame.iloc纯基于整数位置的索引。import pandas as pdmydict = [{
- ThinkPHP支持多种php模板引擎,可以根据个人需要加以配置。下面我们以Smarty模板引擎为例,给大家说说具体的操作流程!首先去Sma
- 官网下载就好, https://www.python.org/downloads/release/python-352/用installer
- 视频观看视频图像精灵这是我们教程系列“使用 Pygame 进行游戏开发”的第 3 部分。它适用于对游
- 实际工作中可能会有这样的场景:两个结构体(可能类型一样), 字段名和类型都一样, 想复制一个结构体的全部或者其中某几个字段的值到另一个(即m
- 直方图的定义直方图的性质只统计某个灰度级出现的次数,图像的大小不一样的话, 某灰度值的像素出现的次数是不一样的。那如果我们在这基础上除以像素
- 我在一篇文章所说,首页的“站点名称”最好用h1标签来定义,但从美观考虑,要用logo图片来代替h1,这时需要隐藏h1内的这段文字,但又不能对
- 本文实例讲述python调用Moxa PCOMM Lite通过串口Ymodem协议实现发送文件的方法,该程序采用python 2.7编写。主
- property属性一种用起来像是使用实例属性一样的特殊属性,可以对应于某个方法既要保护类的封装特性,又要让开发者可以使用 对象.属性 的方
- 目录一、列表求并集1. union_by二、列表求交集1. intersection_by三、列表求差集1. difference2. di
- 在IE7还不支持counter 和increment 属性之前,我从来没有用过它们,也从来没有使用过:before 伪元素和content
- 在我看来学习不难,配置一些环境真的很痛苦,之前的caffe配置,一口老血。。不过用Python遇到了pip安装,真的赞,可是在用pip装te
- 合并:torch.cat(inputs=(a, b), dimension=1)e.g. x = torch.cat((x,y), 0) 沿
- 本文实例为大家分享了pygame实现简单五子棋游戏的具体代码,供大家参考,具体内容如下看代码:①Gomuku2.py:import sysi