51_Django数据库_ORM常用Field详解(2)

继续在之前创建的project499中进行操作。
1. 在models.py文件中更新代码

from django.db import models

class Article(models.Model):
    id = models.BigAutoField(primary_key=True)
    removed = models.BooleanField()
    title = models.CharField(max_length=200)
    #下行代码为新增的代码
    create_time = models.DateTimeField()

2. 把模型映射到数据库当中
运行代码

python manage.py makemigrations

跳出提示如下:
在这里插入图片描述
选择1,然后输入timezone.now,按回车
在这里插入图片描述
运行如下代码:

python manage.py migrate

数据库表格中出现了create_time字段
在这里插入图片描述
3. 在views.py中更新代码如下

from django.shortcuts import render
from django.http import HttpResponse
from .models import Article
from django.utils.timezone import now

def index(request):
    article = Article(removed=False,title='第4篇文字',create_time=now())
    article.save()
    return HttpResponse("success")

保存后刷新网页
数据库中新增了一条数据
在这里插入图片描述
但是创建时间与实际时间差了8个小时,因为系统获取的是UTC时间。

4. 使用localtime
如果想把时间转换成所在地时间,需要使用localtime。
在setting.py中修改TIME_ZONE,代码如下:

TIME_ZONE = 'Asia/Shanghai'

5. 将localtime渲染到html文件中
在templates文件夹中创建index.html文件,代码更新如下:

{% load tz %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    {{ create_time|localtime }}

</body>
</html>

然后在views.py文件中更新代码如下:

from django.shortcuts import render
from django.http import HttpResponse
from .models import Article
from django.utils.timezone import now

def index(request):
    article = Article.objects.get(pk=1)
    create_time = article.create_time
    return render(request,'index.html',context={'create_time':create_time}

保存,然后刷新网页,网页出现第一条数据的创建时间
在这里插入图片描述
6. 数据库中自动写入时间
在models.py文件中更新代码如下:

from django.db import models

class Article(models.Model):
    id = models.BigAutoField(primary_key=True)
    removed = models.BooleanField(default='False')
    title = models.CharField(max_length=200)
    create_time = models.DateTimeField(auto_now_add=True)

然后更新views.py文件中的代码如下:

from django.shortcuts import render
from django.http import HttpResponse
from .models import Article
from django.utils.timezone import now

def index(request):  
    article = Article(title='第3篇文字')
    article.save()
    return HttpResponse('sueccess')

保存后,刷新浏览器,查看数据库,里面已经写入一条新的数据,并且创建时间也已经存储进去。
在这里插入图片描述
auto_now_add是在第一次添加数据进去的时候回自动获取当前时间
auto_now,每次这个对象调用save方法的时候都会将当前时间更新
一般auto_now_add用于创建时间,auto_now用于更新时间。

7. 笔记总结
django.utils.timezone.now方法
会根据setting.py文件中是否设置了USE_TZ=True来获取当前时间。如果设置了,那么就获取一个aware类型的UTC时间。如果没有设置,那么就会获取一个naive类型的时间。

django.utils.timezone.localtime方法
会根据setting.py中的TIME_ZONE来讲一个aware类型的时间转换为TIME_ZONE指定时区的时间。

来源:知了课堂

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值