Django 如何使用日期时间选择器规范用户的时间输入示例代码详解


Posted in Python onMay 22, 2020

如果你的模型中含有 datetime 类型的字段,表单中需要用户输入日期和时间,那么你如何保证不同用户输入的时间都遵循一定的格式 (DD/MM/YYYY 或者 YYYY-MM-DD) 是个必须要考虑的问题。一个更好的方式是在前端使用日期时间选择器 DateTimePicker,以日历的形式统一选择输入时间,如下图所示。小编今天将尝试以最少的代码教你实现如何在 Django 项目中实现日期时间选择器 DateTimePicker。

Django 如何使用日期时间选择器规范用户的时间输入示例代码详解

示范模型

假如我们有如下一个 Article 模型,含有 pub_date 字段,其格式是 DateTimeField。

#models.py

class Article(models.Model):
 """文章模型"""

 title = models.CharField('标题', max_length=200, db_index=True)
 pub_date = models.DateTimeField('发布时间', null=True)

表单

#forms.py

#forms.py
class ArticleForm(forms.ModelForm):
 class Meta:
 model = Article
 exclude = ()

视图和 URLConf

#views.py

class ArticleCreateView(CreateView):
 model = Article
 form_class = ArticleForm
 template_name = 'blog/article_form.html'

#urls.py

re_path(r'^article/create/$', views.ArticleCreateView.as_view(), name='article_create'),

模板

#template/blog/article_form.html

{% block content %}
 <form action="" method="post" enctype="multipart/form-data">
 {{ form.as_p }}
 {% csrf_token %}
 <p><input type="submit" value="Save content"></p>
 </form>
 </p>
{% endblock %}

此时当你创建文章时,你将看到 pub_date 发布日期仍然是文本输入格式,如下图所示:

Django 如何使用日期时间选择器规范用户的时间输入示例代码详解

接下来就是见证奇迹的时刻了。你在模板中稍微增加几行 js 的代码,如下所示:

<form action="" method="post" enctype="multipart/form-data">
 {{ form.as_p }}
 {% csrf_token %}
 <p><input type="submit" value="Save content"></p>
 </form>
 </p>
{% endblock %}
{% block js %}
<!-- XDSoft DateTimePicker -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jquery-datetimepicker/2.5.20/jquery.datetimepicker.min.css" integrity="sha256-DOS9W6NR+NFe1fUhEE0PGKY/fubbUCnOfTje2JMDw3Y=" crossorigin="anonymous" />
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-datetimepicker/2.5.20/jquery.datetimepicker.full.min.js" integrity="sha256-FEqEelWI3WouFOo2VWP/uJfs1y8KJ++FLh2Lbqc8SJk=" crossorigin="anonymous"></script>
 <script>
$(function () {
 $("#id_pub_date").datetimepicker( {
  format:'Y-m-d H:i',
 });
 });
 </script>
{% endblock %}

此时你把鼠标移动到日期输入栏,美观的日期和时间选择器就出现了,如下图所示:

Django 如何使用日期时间选择器规范用户的时间输入示例代码详解

工作原理

这几行 Js 的代码作用是引入 XDSoft DateTimePicker 的 js 代码和 css 样式,针对 id_pub_date 的表单字段生成一个 datetimepicker 的实例,并设置输入日期和时间格式。如果你在模型中 DateTimeField 的字段名为 visit_date, 你只需为 id_visit_date 再生成一个实例即可。Django 的表单会默认为每个输入字段 id 加上 id_的前缀。

前端基于 JS 的日期和时间选择器很多,比如 BootstrapDateTimePicker,Fengyuanzhen's DateTimePicker, 但 Django 中最简易方便使用的还是 XDSoft DateTimePicker, 强烈推荐。

总结

到此这篇关于Django 如何使用日期时间选择器规范用户的时间输入的文章就介绍到这了,更多相关 Django 如何使用日期时间选择器规范用户的时间输入内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python通过90行代码搭建一个音乐搜索工具
Jul 29 Python
Python使用装饰器模拟用户登陆验证功能示例
Aug 24 Python
python tornado微信开发入门代码
Aug 24 Python
python实现决策树分类
Aug 30 Python
编写多线程Python服务器 最适合基础
Sep 14 Python
python图像处理入门(一)
Apr 04 Python
详解Python3 对象组合zip()和回退方式*zip
May 15 Python
Python二进制文件读取并转换为浮点数详解
Jun 25 Python
keras小技巧——获取某一个网络层的输出方式
May 23 Python
Django+Celery实现动态配置定时任务的方法示例
May 26 Python
python如何对链表操作
Oct 10 Python
使用python创建股票的时间序列可视化分析
Mar 03 Python
python实现猜单词游戏
May 22 #Python
Django使用rest_framework写出API
May 21 #Python
使用keras根据层名称来初始化网络
May 21 #Python
关于Keras Dense层整理
May 21 #Python
Django如何使用redis作为缓存
May 21 #Python
如何打包Python Web项目实现免安装一键启动的方法
May 21 #Python
keras之权重初始化方式
May 21 #Python
You might like
收音机史话 - 1960年代前后的DIY
2021/03/02 无线电
基于mysql的bbs设计(二)
2006/10/09 PHP
php flv视频时间获取函数
2010/06/29 PHP
PHP和MySql中32位和64位的整形范围是多少
2016/02/18 PHP
TP5框架安全机制实例分析
2020/04/05 PHP
Prototype使用指南之range.js
2007/01/10 Javascript
javascript 支持链式调用的异步调用框架Async.Operation
2009/08/04 Javascript
JavaScript接口实现代码 (Interfaces In JavaScript)
2010/06/11 Javascript
jquery 简单应用示例总结
2013/08/09 Javascript
js判断移动端是否安装某款app的多种方法
2015/12/18 Javascript
Javascript 严格模式use strict详解
2017/09/16 Javascript
JavaScript基于面向对象实现的猜拳游戏
2018/01/03 Javascript
浅谈vue.js导入css库(elementUi)的方法
2018/03/09 Javascript
IDEA安装vue插件图文详解
2019/09/26 Javascript
nginx部署多个vue项目的方法示例
2020/09/06 Javascript
利用 Chrome Dev Tools 进行页面性能分析的步骤说明(前端性能优化)
2021/02/24 Javascript
[01:10:30]DOTA2-DPC中国联赛正赛 Dragon vs Dynasty BO3 第一场 3月4日
2021/03/11 DOTA
在Python中处理时间之clock()方法的使用
2015/05/22 Python
PyQt实现界面翻转切换效果
2018/04/20 Python
Python随机函数random()使用方法小结
2018/04/29 Python
Tensorflow 合并通道及加载子模型的方法
2018/07/26 Python
对Xpath 获取子标签下所有文本的方法详解
2019/01/02 Python
Python导入父文件夹中模块并读取当前文件夹内的资源
2020/11/19 Python
CSS3中各种颜色属性的使用教程
2016/05/17 HTML / CSS
手摸手教你用canvas实现给图片添加平铺水印的实现
2019/08/20 HTML / CSS
naturalizer加拿大官网:美国娜然女鞋
2017/04/04 全球购物
NFL墨西哥官方商店:Tienda NFL
2017/11/28 全球购物
萨克斯第五大道英国:Saks Fifth Avenue英国
2019/04/01 全球购物
大专毕业生简历的自我评价
2013/10/20 职场文书
工程部经理岗位职责
2013/12/08 职场文书
2014年老干部工作总结
2014/11/21 职场文书
商业门面租房协议书
2014/11/25 职场文书
人事任命通知书
2015/04/21 职场文书
AJAX学习笔记
2021/05/18 Javascript
教你使用TensorFlow2识别验证码
2021/06/11 Python
Java图书管理系统,课程设计必用(源码+文档)
2021/06/30 Java/Android