django2中關於時間處理策略

水痕001發表於2019-03-05

一、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小時

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')
    複製程式碼
    # 返回結果
    <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方法的時候更新為當前時間

相關文章