阅读 947

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

文章分类
后端
文章标签