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实现无证书加密解密实例
Oct 27 Python
简单介绍Python2.x版本中的cmp()方法的使用
May 20 Python
Python实现字符串匹配算法代码示例
Dec 05 Python
详解python OpenCV学习笔记之直方图均衡化
Feb 08 Python
Python BS4库的安装与使用详解
Aug 08 Python
在Python中将函数作为另一个函数的参数传入并调用的方法
Jan 22 Python
如何通过雪花算法用Python实现一个简单的发号器
Jul 03 Python
python multiprocessing模块用法及原理介绍
Aug 20 Python
tensorflow指定GPU与动态分配GPU memory设置
Feb 03 Python
Django Admin 上传文件到七牛云的示例代码
Jun 20 Python
Python configparser模块应用过程解析
Aug 14 Python
Python爬虫模拟登陆哔哩哔哩(bilibili)并突破点选验证码功能
Dec 21 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
利用PHP函数计算中英文字符串长度的方法
2014/11/11 PHP
理解php依赖注入和控制反转
2016/05/11 PHP
yii框架无限极分类的实现方法
2017/04/08 PHP
Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片示例
2017/09/20 PHP
Javascript图像处理思路及实现代码
2012/12/25 Javascript
JQuery为textarea添加maxlength属性并且兼容IE
2013/04/25 Javascript
多次注册事件会导致一个事件被触发多次的解决方法
2013/08/12 Javascript
JS创建事件的三种方法(实例代码)
2016/05/12 Javascript
深入理解JS函数的参数(arguments)的使用
2016/05/28 Javascript
html5+CSS 实现禁止IOS长按复制粘贴功能
2016/12/28 Javascript
JQuery实现动态操作表格
2017/01/11 Javascript
axios学习教程全攻略
2017/03/26 Javascript
vue组件中的数据传递方法
2018/05/14 Javascript
三步实现ionic3点击退出app程序
2019/09/17 Javascript
微信小程序request请求封装,验签代码实例
2019/12/04 Javascript
JavaScript实现随机点名器
2020/03/25 Javascript
JS forEach跳出循环2种实现方法
2020/06/24 Javascript
谈谈JavaScript中的垃圾回收机制
2020/09/17 Javascript
python备份文件的脚本
2008/08/11 Python
Python max内置函数详细介绍
2016/11/17 Python
将Python字符串生成PDF的实例代码详解
2019/05/17 Python
python如何设置静态变量
2020/09/07 Python
python3爬虫中多线程的优势总结
2020/11/24 Python
美国知名的百货清仓店:Neiman Marcus Last Call
2016/08/03 全球购物
凯特·丝蓓英国官网:Kate Spade英国
2016/11/07 全球购物
英国花园、DIY、电器和家居用品商店:Robert Dyas
2019/03/18 全球购物
中学生社会实践活动总结
2014/07/03 职场文书
公证委托书格式
2014/09/13 职场文书
乌镇导游词
2015/02/02 职场文书
2015年保安个人工作总结
2015/04/02 职场文书
离婚承诺书格式范文
2015/05/04 职场文书
社区法制宣传月活动总结
2015/05/07 职场文书
监守自盗观后感
2015/06/10 职场文书
PHP策略模式写法
2021/04/01 PHP
mybatis使用oracle进行添加数据的方法
2021/04/27 Oracle
springboot集成springCloud中gateway时启动报错的解决
2021/07/16 Java/Android