Django中的日期处理注意事项和自定义时间格式转(2)

django中所有的model字段都拥有一个default参数,用来给字段设置默认值。可以用default=timezone.now来替换auto_now=True或auto_now_add=True。timezone.now对应着django.utils.timezone.now(),代码示例:

from django.utils import timezone

class Datacenter(models.Model):
    id = models.UUIDField('机房ID', default=uuid.uuid4, primary_key=True)
    zone = models.ForeignKey(Zone, verbose_name='所在区域', on_delete=models.PROTECT)
    dc_name = models.CharField('机房', max_length=128, unique=True)
    networks = models.CharField('IP地址段', max_length=128, blank=True, unique=True)
    update_time = models.DateTimeField('更新时间', default=timezone.now())

def __str__(self):
        return self.dc_name

class Meta:
        verbose_name = '机房配置'
        verbose_name_plural = '机房配置'


这里'update_time'字段默认值改为timezone.now()后,再次编辑已经能看到相应‘更新时间’字段,并且可修改:

Django中的日期处理注意事项和自定义时间格式转

更新时间已可修改
我们把时间天数加1天后,保存退出再观察‘更新时间’已经变为自定义时间:
保存后时间变为自定义时间

Django中的日期处理注意事项和自定义时间格式转

自定义日期格式:
刚创建的Django应用,可能你看到的日期显示格式跟下图类似(跟LANGUAGE_CODE和TIME_ZONE有关):

![可能的默认日期格式]

Django中的日期处理注意事项和自定义时间格式转

如果不习惯这种格式,自己定义显示格式的配置如下,更改Django的setting.py文件:

USE_L10N = False
DATE_FORMAT = 'Y-m-d'
DATETIME_FORMAT = 'Y-m-d H:i:s'

注意事项:如果USE_L10N设置为了True,那么语言环境规定的格式具有更高的优先级并将被应用,即DATE_FORMAT不生效。
这里可用的格式化字符串的其他写法参见Django官方文档:

<>;

Available format strings,部分截图:

Django中的日期处理注意事项和自定义时间格式转

Django中的日期处理注意事项和自定义时间格式转

format stringsDjango中的日期处理注意事项和自定义时间格式转换

另外在Django页面渲染的时候,html页面从数据库中读出DateTimeField字段时,显示的时间格式和数据库中存放的格式不一致,另外一个解决办法:可以在页面格式化时间,添加{{ Datacenter.updatetime|date:"Y-m-d H:i:s" }}类似的过滤器。之后刷新页面,即可正常显示。

相关文档:

https://docs.djangoproject.com/en/2.0/ref/settings/

Flask+uWSGI+Nginx+Ubuntu部署教程
Ubuntu 16.04下安装部署 Nginx+uWSGI+Django1.9.7 
Ubuntu 16.10 下部署Django+uWSGI+Nginx服务器 
Nginx+uWSGI+Django在Ubuntu下的部署 
uWSGI+Nginx+Django安装和配置 
Ubuntu下通过Nginx部署Django 
Django运算表达式与Q对象/F对象  https://www.linuxidc.com/Linux/2018-05/152509.htm
Django 错误之 No module named ‘MySQLdb’ https://www.linuxidc.com/Linux/2018-04/151991.htm
Ubuntu 16.04 LTS Django虚拟开发环境配置

Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/12678.html