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计算三角函数之atan()方法的使用
May 15 Python
实例讲解Python的函数闭包使用中应注意的问题
Jun 20 Python
Python正则表达式教程之一:基础篇
Mar 02 Python
python+selenium+autoit实现文件上传功能
Aug 23 Python
Python KMeans聚类问题分析
Feb 23 Python
Python实现的微信支付方式总结【三种方式】
Apr 13 Python
python 进程 进程池 进程间通信实现解析
Aug 23 Python
pygame库实现移动底座弹球小游戏
Apr 14 Python
Pytorch使用PIL和Numpy将单张图片转为Pytorch张量方式
May 25 Python
Python如何优雅删除字符列表空字符及None元素
Jun 25 Python
Win10下配置tensorflow-gpu的详细教程(无VS2015/2017)
Jul 14 Python
Pycharm中如何关掉python console
Oct 27 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中使用gettext来支持多语言的方法
2011/05/02 PHP
php循环语句 for()与foreach()用法区别介绍
2012/09/05 PHP
PHP Smarty模版简单使用方法
2016/03/30 PHP
js树形控件脚本代码
2008/07/24 Javascript
Tinymce+jQuery.Validation使用产生的BUG
2010/03/29 Javascript
node.js中的events.emitter.listeners方法使用说明
2014/12/10 Javascript
创建自己的jquery表格插件
2015/11/25 Javascript
Swiper 4.x 使用方法(移动端网站的内容触摸滑动)
2018/05/17 Javascript
JS实现区分中英文并统计字符个数的方法示例
2018/06/09 Javascript
解决在vue项目中webpack打包后字体不生效的问题
2018/09/01 Javascript
Js 利用正则表达式和replace函数获取string中所有被匹配到的文本(推荐)
2018/10/28 Javascript
原生js实现淘宝放大镜效果
2020/10/28 Javascript
JS实现时间校验的代码
2020/05/25 Javascript
[01:04]不如跳舞!DOTA2新英雄玛尔斯的欢乐日常
2019/03/11 DOTA
python通过线程实现定时器timer的方法
2015/03/16 Python
Python处理XML格式数据的方法详解
2017/03/21 Python
详解Python安装scrapy的正确姿势
2018/06/26 Python
学习python分支结构
2019/05/17 Python
python bluetooth蓝牙信息获取蓝牙设备类型的方法
2019/11/29 Python
Python爬虫库BeautifulSoup的介绍与简单使用实例
2020/01/25 Python
Python 实现平台类游戏添加跳跃功能
2020/03/27 Python
keras模型保存为tensorflow的二进制模型方式
2020/05/25 Python
免费获得微软MCSD证书赶快行动吧!
2012/11/13 HTML / CSS
HTML5实现的图片无限加载的瀑布流效果另带边框圆角阴影
2014/03/07 HTML / CSS
Manuka Doctor美国官网:麦卢卡蜂蜜和蜂毒护肤
2016/12/25 全球购物
印度尼西亚最大和最全面的网络商城:Blibli.com
2017/10/04 全球购物
常用UNIX 命令(Linux的常用命令)
2013/07/10 面试题
2014年自我评价
2014/01/04 职场文书
2014年应届大学生自我评价
2014/01/09 职场文书
初中体育教学反思
2014/01/14 职场文书
纺织工程专业个人求职信范文
2014/01/27 职场文书
青年志愿者事迹材料
2014/02/07 职场文书
《高尔基和他的儿子》教学反思
2014/04/09 职场文书
信访工作经验交流材料
2014/05/23 职场文书
2016年度创先争优活动总结
2016/04/05 职场文书
vue实现在data里引入相对路径
2022/06/05 Vue.js