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解析XML的几种常见方法的介绍
Apr 09 Python
python清除指定目录内所有文件中script的方法
Jun 30 Python
Python实现将xml导入至excel
Nov 20 Python
Python多进程分块读取超大文件的方法
Apr 13 Python
详解Python中的文件操作
Aug 28 Python
Python解惑之整数比较详解
Apr 24 Python
python下实现二叉堆以及堆排序的示例
Sep 29 Python
Django框架模板注入操作示例【变量传递到模板】
Dec 19 Python
Python编写合并字典并实现敏感目录的小脚本
Feb 26 Python
Python3爬虫中Selenium的用法详解
Jul 10 Python
python实现猜拳游戏项目
Nov 30 Python
python实现发送QQ邮件(可加附件)
Dec 23 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
解析yahoo邮件用phpmailer发送的实例
2013/06/24 PHP
提高PHP性能的编码技巧以及性能优化详细解析
2013/08/24 PHP
PHP获取访问页面HTTP状态码的实现代码
2016/11/03 PHP
php语言注释,单行注释和多行注释
2018/01/21 PHP
再谈IE中Flash控件的自动激活 ObjectWrap
2007/03/09 Javascript
为JavaScript类型增加方法的实现代码(增加功能)
2011/12/29 Javascript
本地图片预览(支持IE6/IE7/IE8/Firefox3)经验总结
2013/03/25 Javascript
Javascript 按位与运算符 (&amp;)使用介绍
2014/02/04 Javascript
js实现在同一窗口浏览图片
2014/09/17 Javascript
JS模式之单例模式基本用法
2015/06/30 Javascript
JS+CSS实现下拉列表框美化效果(3款)
2015/08/15 Javascript
JavaScript中eval()函数用法详解
2015/12/14 Javascript
JavaScript仿淘宝页面图片滚动加载及刷新回顶部的方法解析
2016/05/24 Javascript
AngularJS 表达式详细讲解及实例代码
2016/07/26 Javascript
jquery.validate[.unobtrusive]和Bootstrap实现tooltip错误提示问题分析
2016/10/30 Javascript
微信小程序 页面跳转传递值几种方法详解
2017/01/12 Javascript
js实现适配不同的屏幕大小
2017/04/10 Javascript
vuejs如何配置less
2017/04/25 Javascript
Node.js中的http请求客户端示例(request client)
2017/05/04 Javascript
angularJs中ng-model-options设置数据同步的方法
2018/09/30 Javascript
jQuery实现的别踩白块小游戏完整示例
2019/01/07 jQuery
js实现漂亮的星空背景
2019/11/01 Javascript
关于javascript中的promise的用法和注意事项(推荐)
2021/01/15 Javascript
python爬虫获取京东手机图片的图文教程
2017/12/29 Python
numpy使用技巧之数组过滤实例代码
2018/02/03 Python
Python基于opencv调用摄像头获取个人图片的实现方法
2019/02/21 Python
python多线程下信号处理程序示例
2019/05/31 Python
使用 Python 写一个简易的抽奖程序
2019/12/08 Python
儿科主治医生个人求职信
2013/09/23 职场文书
初婚初育证明
2014/01/14 职场文书
高中课前三分钟演讲稿
2014/09/13 职场文书
普宁寺导游词
2015/02/04 职场文书
大学生社会实践感想
2015/08/11 职场文书
2016大学生暑期社会实践心得体会
2016/01/14 职场文书
2019最新版试用期劳动合同模板!
2019/07/04 职场文书
酒店工程部的岗位职责汇总大全
2019/10/23 职场文书