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 pass 语句使用示例
Mar 11 Python
用Python给文本创立向量空间模型的教程
Apr 23 Python
python获取各操作系统硬件信息的方法
Jun 03 Python
Python实现简单网页图片抓取完整代码实例
Dec 15 Python
对Pandas DataFrame缺失值的查找与填充示例讲解
Nov 06 Python
Python3实现的简单工资管理系统示例
Mar 12 Python
python 设置输出图像的像素大小方法
Jul 04 Python
Python读取实时数据流示例
Dec 02 Python
Python+Appium实现自动化测试的使用步骤
Mar 24 Python
解决Jupyter Notebook开始菜单栏Anaconda下消失的问题
Apr 13 Python
Python startswith()和endswith() 方法原理解析
Apr 28 Python
Python绘图实现台风路径可视化代码实例
Oct 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
php入门学习知识点五 关于php数组的几个基本操作
2011/07/14 PHP
php合并数组中相同元素的方法
2014/11/13 PHP
PHP的Yii框架的基本使用示例
2015/08/21 PHP
基于PHP的加载类操作以及其他两种魔术方法的应用实例
2017/08/28 PHP
自定义Laravel (monolog)日志位置,并增加请求ID的实现
2019/10/17 PHP
基于jquery实现点击左右按钮图片横向滚动
2013/04/11 Javascript
js 判断上传文件大小及格式代码
2013/11/13 Javascript
jQuery使用toggleClass方法动态添加删除Class样式的方法
2015/03/26 Javascript
基于jQuery实现的无刷新表格分页实例
2016/02/17 Javascript
javascript先序遍历DOM树的方法
2016/02/27 Javascript
Bootstrap3制作图片轮播效果
2016/05/12 Javascript
jQuery中的100个技巧汇总
2016/12/15 Javascript
Bootstrap面板使用方法
2017/01/16 Javascript
js上下视差滚动简单实现代码
2017/03/07 Javascript
angular-ngSanitize模块-$sanitize服务详解
2017/06/13 Javascript
详解webpack + react + react-router 如何实现懒加载
2017/11/20 Javascript
vue-cli3.0 环境变量与模式配置方法
2018/11/08 Javascript
VUE 自定义组件模板的方法详解
2019/08/30 Javascript
通过实例了解Javascript柯里化流程
2020/03/03 Javascript
vue中v-for循环选中点击的元素并对该元素添加样式操作
2020/07/17 Javascript
js实现翻牌小游戏
2020/07/31 Javascript
[36:54]Mineski vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
深入浅析ImageMagick命令执行漏洞
2016/10/11 Python
回调函数的意义以及python实现实例
2017/06/20 Python
Python实现计算图像RGB均值方式
2020/06/04 Python
CSS3之2D与3D变换的实现方法
2019/01/28 HTML / CSS
HTML5 新表单类型示例代码
2018/03/20 HTML / CSS
在C#中如何实现多态
2014/07/02 面试题
初级Java程序员面试题
2016/03/03 面试题
最新计算机专业自荐信
2013/10/16 职场文书
监察建议书范文
2014/03/12 职场文书
工伤私了协议书范本
2014/11/24 职场文书
大学辅导员述职报告
2015/01/10 职场文书
工厂仓库管理员岗位职责
2015/04/09 职场文书
Win11怎样将锁屏账户头像图片改成动画视频
2021/11/21 数码科技
漫画《催眠麦克风-Dawn Of Divisions》第二卷PV公开
2022/04/05 日漫