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 制作图片转pdf工具
Jan 30 Python
Python使用Redis实现作业调度系统(超简单)
Mar 22 Python
Linux下为不同版本python安装第三方库
Aug 31 Python
Python实现更改图片尺寸大小的方法(基于Pillow包)
Sep 19 Python
Python selenium根据class定位页面元素的方法
Feb 26 Python
django框架事务处理小结【ORM 事务及raw sql,customize sql 事务处理】
Jun 27 Python
基于python进行抽样分布描述及实践详解
Sep 02 Python
PyCharm导入python项目并配置虚拟环境的教程详解
Oct 13 Python
Python装饰器的应用场景代码总结
Apr 10 Python
使用Python画了一棵圣诞树的实例代码
Nov 27 Python
一文读懂python Scrapy爬虫框架
Feb 24 Python
pycharm Tab键设置成4个空格的操作
Feb 26 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获取网址的顶级域名函数代码
2012/09/24 PHP
PHP简单实现记录网站访问量功能示例
2018/06/06 PHP
Apache站点配置SSL强制跳转443
2021/03/09 Servers
最常用的12种设计模式小结
2011/08/09 Javascript
javascript判断两个IP地址是否在同一个网段的实现思路
2013/12/13 Javascript
jQuery满意度星级评价插件特效代码分享
2015/08/19 Javascript
jQuery 生成svg矢量二维码
2016/08/09 Javascript
jquery实现拖动效果
2016/08/10 Javascript
微信小程序 Flex布局详解
2016/10/09 Javascript
详解Angular的双向数据绑定(MV-VM)
2016/12/26 Javascript
Angular2利用组件与指令实现图片轮播组件
2017/03/27 Javascript
Angular4集成ng2-file-upload的上传组件
2018/03/14 Javascript
nodejs express配置自签名https服务器的方法
2018/05/22 NodeJs
webpack+vue+express(hot)热启动调试简单配置方法
2018/09/19 Javascript
webpack中如何使用雪碧图的示例代码
2018/11/11 Javascript
vue开发环境配置跨域的方法步骤
2019/01/16 Javascript
JS实现电商商品展示放大镜特效
2020/01/07 Javascript
python实现类似ftp传输文件的网络程序示例
2014/04/08 Python
python的类变量和成员变量用法实例教程
2014/08/25 Python
Python中itertools模块用法详解
2014/09/25 Python
解决Django模板无法使用perms变量问题的方法
2017/09/10 Python
Python3.6使用tesseract-ocr的正确方法
2018/10/17 Python
Python 中list ,set,dict的大规模查找效率对比详解
2019/10/11 Python
nginx+uwsgi+django环境搭建的方法步骤
2019/11/25 Python
python3 图片 4通道转成3通道 1通道转成3通道 图片压缩实例
2019/12/03 Python
使用python 计算百分位数实现数据分箱代码
2020/03/03 Python
Python Tornado核心及相关原理详解
2020/06/24 Python
HTML5实现视频直播功能思路详解
2017/11/16 HTML / CSS
戴森台湾线上商城:Dyson Taiwan
2018/05/21 全球购物
德国药房apodiscounter中文官网:德国排名前三的网上药店
2019/06/03 全球购物
文员个人求职自荐信
2013/09/21 职场文书
企业安全生产标语
2014/06/06 职场文书
2015年班主任个人工作总结
2015/03/31 职场文书
2016年优秀团员事迹材料
2016/02/25 职场文书
CSS3鼠标悬浮过渡缩放效果
2021/04/17 HTML / CSS
在python中实现导入一个需要传参的模块
2021/05/12 Python