django中filter的参数(详解django2中关于时间处理策略)
django中filter的参数
详解django2中关于时间处理策略一、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
- mysql数据恢复时间点(MySQL 基于时间点的快速恢复方案)
- dedecms保存文章慢(dedeCms批量修改文章发布时间的方法)
- sqlserver查询自定义时间数据(SQLServer查询某个时间段购买过商品的所有用户)
- sqlserver带参数的存储过程(SQL Server 日期和时间的内部存储过程)
- sqlserver日期型数据类型是哪个(SQL Server时间戳功能与用法详解)
- laravel活动时间查询(laravel 时间格式转时间戳的例子)
- SqlServer 按时间段查询问题(SqlServer 按时间段查询问题)
- python将字符串转换为时间格式(Python时间和字符串转换操作实例分析)
- linux wait函数(分析从Linux源码看TIME_WAIT的持续时间)
- 阿里云无法远程连接服务器(解决阿里云ssh远程连接短时间就会断掉的问题)
- dedecms发布时间调整(织梦DEDECMS发布完文章没有显示文章内容解决办法)
- python获取当前时间戳(Python基于datetime或time模块分别获取当前时间戳的方法实例)
- vue时间转换(vue如何动态实时的显示时间浅析)
- javascript 自带格式化时间(JavaScript内置日期、时间格式化时间实例代码)
- mysql操作时间的函数(一篇文章搞定Mysql日期时间函数)
- python 时间戳转化为格式(Python datetime和unix时间戳之间相互转换的讲解)
- 《满江红》不要只当电影看,学生应该这样做(满江红不要只当电影看)
- 电影《民间怪谈录之走阴人》定档8月5日,开启一场中式惊悚之旅(电影民间怪谈录之走阴人定档8月5日)
- 原创图画书,以儿童视角讲述中国故事(以儿童视角讲述中国故事)
- 八月再见 愿你岁月不扰,余生静好(八月再见愿你岁月不扰)
- 赏读 八月再见,九月你好(赏读八月再见九月你好)
- 散文 八月再见,九月,我在风中等你(散文八月再见九月)
热门推荐
- mysql查看执行慢的sql(系统隐形杀手——阻塞与等待SQL)
- pythonai识别算法(Python3调用百度AI识别图片中的文字功能示例测试可用)
- 使用npoi将数据导出到一个EXCEL的多SHEET
- css的背景图的平铺方式有哪几种(纯CSS实现hover图片pop-out弹出效果的实例代码)
- docker如何访问nginx(基于docker启动nginxssl配置)
- 自动化播放声音(video实现有声音自动播放的实现方法)
- mysql恢复数据库(MySQL 两种恢复数据的方法)
- linux机器重启了docker容器还在不(Linux下docker 容器退出bash的两种实现方法)
- css样式中实现3d效果(利用纯CSS实现动态的文字效果实例)
- linux分区管理(在腾讯云的Linux系统服务器上格式化和分区磁盘的教程)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9