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 调用DLL操作抄表机
Jan 12 Python
Python设计模式之代理模式实例
Apr 26 Python
python获取Linux下文件版本信息、公司名和产品名的方法
Oct 05 Python
python生成以及打开json、csv和txt文件的实例
Nov 16 Python
Python OpenCV对本地视频文件进行分帧保存的实例
Jan 08 Python
在Pandas中处理NaN值的方法
Jun 25 Python
详解将Python程序(.py)转换为Windows可执行文件(.exe)
Jul 19 Python
pytorch打印网络结构的实例
Aug 19 Python
Python爬虫爬取糗事百科段子实例分享
Jul 31 Python
python删除文件、清空目录的实现方法
Sep 23 Python
Selenium 配置启动项参数的方法
Dec 04 Python
浅谈Python中的函数(def)及参数传递操作
May 25 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后台程序与Javascript的两种交互方式
2009/10/25 PHP
laravel框架select2多选插件初始化默认选中项操作示例
2020/02/18 PHP
javascript 精粹笔记
2010/05/09 Javascript
JavaScript获取FCK编辑器信息的具体方法
2013/07/12 Javascript
jqGrid随窗口大小变化自适应大小的示例代码
2013/12/28 Javascript
jQuery插件开发详细教程
2014/06/06 Javascript
移动Web中图片自适应的两种JavaScript解决方法
2015/06/18 Javascript
Bootstrap CSS组件之导航(nav)
2016/12/17 Javascript
输入框点击时边框变色效果的实现方法
2016/12/26 Javascript
深入浅析javascript继承体系
2017/10/23 Javascript
Vue实现购物车场景下的应用
2017/11/27 Javascript
浅谈node.js 命令行工具(cli)
2018/05/10 Javascript
JavaScript JMap类定义与使用方法示例
2019/01/22 Javascript
vue中多个倒计时实现代码实例
2019/03/27 Javascript
vue-cli+axios实现文件上传下载功能(下载接收后台返回文件流)
2019/05/10 Javascript
layui输入框只允许输入中文且判断长度的例子
2019/09/18 Javascript
JS实现灯泡开关特效
2020/03/30 Javascript
解决vue.js提交数组时出现数组下标的问题
2019/11/05 Javascript
基于Django contrib Comments 评论模块(详解)
2017/12/08 Python
Python 做曲线拟合和求积分的方法
2018/12/29 Python
python调用外部程序的实操步骤
2019/03/04 Python
使用python图形模块turtle库绘制樱花、玫瑰、圣诞树代码实例
2020/03/16 Python
python+selenium+Chrome options参数的使用
2020/03/18 Python
python 使用raw socket进行TCP SYN扫描实例
2020/05/05 Python
解决Keyerror ''acc'' KeyError: ''val_acc''问题
2020/06/18 Python
Pamela Love官网:纽约设计师Pamela Love的精美、时尚和穿孔珠宝
2020/10/19 全球购物
行政助理岗位职责
2013/11/10 职场文书
实习生自荐信范文
2013/11/13 职场文书
办理暂住证介绍信
2014/01/11 职场文书
献爱心大型公益活动策划方案
2014/09/15 职场文书
代办社保委托书范文
2014/10/06 职场文书
小学生交通安全寄语
2015/02/27 职场文书
机关干部正风肃纪心得体会
2016/01/15 职场文书
如何有效防止sql注入的方法
2021/05/25 SQL Server
Redis RDB技术底层原理详解
2021/09/04 Redis
Python OpenCV实现图形检测示例详解
2022/04/08 Python