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中函数的用法实例教程
Sep 08 Python
Python爬虫DNS解析缓存方法实例分析
Jun 02 Python
给你选择Python语言实现机器学习算法的三大理由
Nov 15 Python
python实现超简单的视频对象提取功能
Jun 04 Python
pandas 空的dataframe 插入列名的示例
Oct 30 Python
python使用pandas处理excel文件转为csv文件的方法示例
Jul 18 Python
TensorFlow实现打印每一层的输出
Jan 21 Python
python print 格式化输出,动态指定长度的实现
Apr 12 Python
python中matplotlib实现随鼠标滑动自动标注代码
Apr 23 Python
浅谈pytorch 模型 .pt, .pth, .pkl的区别及模型保存方式
May 25 Python
Kears 使用:通过回调函数保存最佳准确率下的模型操作
Jun 17 Python
如何使用python包中的sched事件调度器
Apr 30 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实现两个数组相加的方法
2015/02/17 PHP
PHP使用NuSOAP调用Web服务的方法
2015/07/18 PHP
php实现的操作excel类详解
2016/01/15 PHP
深入研究PHP中的preg_replace和代码执行
2018/08/15 PHP
php模式设计之观察者模式应用实例分析
2019/09/25 PHP
谈谈JavaScript中的函数与闭包
2013/04/14 Javascript
js播放wav文件(源码)
2013/04/22 Javascript
JavaScript将数据转换成整数的方法
2014/01/04 Javascript
javascript history对象(历史记录)使用方法(实现浏览器前进后退)
2014/01/07 Javascript
JavaScript检测浏览器cookie是否已经启动的方法
2015/02/27 Javascript
Javascript复制实例详解
2016/01/28 Javascript
jQuery使用each方法与for语句遍历数组示例
2016/06/16 Javascript
AngularJS $injector 依赖注入详解
2016/09/14 Javascript
js获取浏览器高度 窗口高度 元素尺寸 偏移属性的方法
2016/11/21 Javascript
JavaScript中offsetWidth的bug及解决方法
2017/05/17 Javascript
node.js express中app.param的用法详解
2017/07/16 Javascript
基于React+Redux的SSR实现方法
2018/07/03 Javascript
Vue2.0生命周期的理解
2018/08/20 Javascript
详解webpack打包第三方类库的正确姿势
2018/10/20 Javascript
解决antd的Form组件setFieldsValue的警告问题
2020/10/29 Javascript
python打开windows应用程序的实例
2019/06/28 Python
简单了解python的break、continue、pass
2019/07/08 Python
python 实现两个线程交替执行
2020/05/02 Python
分享一个H5原生form表单的checkbox特效代码
2018/02/26 HTML / CSS
一套.net面试题及答案
2016/11/02 面试题
高中生活自我鉴定
2014/01/18 职场文书
劳动之星获奖感言
2014/02/01 职场文书
投资意向书范本
2014/04/01 职场文书
迎新春趣味活动方案
2014/08/24 职场文书
个人委托书如何写
2014/09/25 职场文书
教师学习八项规定六项禁令思想汇报
2014/09/27 职场文书
毕业生对母校寄语
2015/02/26 职场文书
美丽的大脚观后感
2015/06/03 职场文书
红色经典电影观后感
2015/06/18 职场文书
大学生干部培训心得体会
2016/01/06 职场文书
html解决浏览器记住密码输入框的问题
2023/05/07 HTML / CSS