社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Django

django2中关于时间处理策略

水痕001 • 6 年前 • 409 次点击  
阅读 17

django2中关于时间处理策略

一、django中数据模型关于时间字段的认识

  • 1、DateField:可以记录年月日,映射到数据库是date类型
  • 2、DateTimeField:可以记录年月日时分秒,映射到数据库是datetime类型
  • 3、TimeField:可以记录时分秒,映射到数据库是time类型

二、关于navie时间和aware时间的认识详细查看

三、在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')
    复制代码
    # 返回结果
    <ArticleModel>(第一篇文章, 2019-02-28 04:56:43.296133+00:00)
    2019-02-28 12:56:43.296133+08:00
    复制代码
  • 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/Django开发社区
本文地址:http://www.python88.com/topic/29501
 
409 次点击