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 相关文章推荐
Web服务器框架 Tornado简介
Jul 16 Python
Python命名空间详解
Aug 18 Python
python网络编程实例简析
Sep 26 Python
Python中AND、OR的一个使用小技巧
Feb 18 Python
在Python程序和Flask框架中使用SQLAlchemy的教程
Jun 06 Python
CentOS 6.X系统下升级Python2.6到Python2.7 的方法
Oct 12 Python
利用Hyperic调用Python实现进程守护
Jan 02 Python
tensorflow实现简单逻辑回归
Sep 07 Python
Django框架自定义session处理操作示例
May 27 Python
浅谈python的elementtree模块处理中文注意事项
Mar 06 Python
Python turtle编写简单的球类小游戏
Mar 31 Python
Python识别花卉种类鉴定网络热门植物并自动整理分类
Apr 08 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 curl post 时出现的问题解决
2014/01/30 PHP
功能强大的PHP POST提交数据类
2016/07/15 PHP
php工具型代码之印章抠图
2018/07/18 PHP
JavaScript继承方式实例
2010/10/29 Javascript
24款非常有用的 jQuery 插件分享
2011/04/06 Javascript
JS写的贪吃蛇游戏(个人练习)
2013/07/08 Javascript
angularJS 如何读写缓冲的方法(推荐)
2016/08/06 Javascript
JavaScript的事件机制详解
2017/01/17 Javascript
Vue如何从1.0迁移到2.0
2017/10/19 Javascript
使用nodejs+express实现简单的文件上传功能
2017/12/27 NodeJs
Node.js应用设置安全的沙箱环境
2018/04/23 Javascript
js技巧之十几行的代码实现vue.watch代码
2018/06/09 Javascript
Vue之mixin全局的用法详解
2018/08/22 Javascript
Vue项目引进ElementUI组件的方法
2018/11/11 Javascript
node.js事件轮询机制原理知识点
2019/12/22 Javascript
JavaScript对象原型链原理解析
2020/01/22 Javascript
SpringBoot+Vue 前后端合并部署的配置方法
2020/12/30 Vue.js
[08:42]DOTA2每周TOP10 精彩击杀集锦vol.2
2014/06/25 DOTA
python监控网卡流量并使用graphite绘图的示例
2014/04/27 Python
用Python制作简单的钢琴程序的教程
2015/04/01 Python
Python实现Linux的find命令实例分享
2017/06/04 Python
Python实现堡垒机模式下远程命令执行操作示例
2019/05/09 Python
Django shell调试models输出的SQL语句方法
2019/08/29 Python
Python中url标签使用知识点总结
2020/01/16 Python
浅谈Python中的生成器和迭代器
2020/06/19 Python
解决keras模型保存h5文件提示无此目录问题
2020/07/01 Python
python将字典内容写入json文件的实例代码
2020/08/12 Python
python用分数表示矩阵的方法实例
2021/01/11 Python
Pytorch 中的optimizer使用说明
2021/03/03 Python
YSL圣罗兰美妆美国官网:Yves Saint Lauret US
2016/11/21 全球购物
农业开发项目建议书
2014/05/16 职场文书
开发房地产协议书
2014/09/14 职场文书
党的群众路线领导班子整改方案
2014/09/27 职场文书
小学老师对学生的评语
2014/12/29 职场文书
事业单位个人总结
2015/02/12 职场文书
聚众斗殴罪辩护词
2015/05/21 职场文书