Django 如何使用日期时间选择器规范用户的时间输入示例代码详解
作者:young 发布时间:2023-06-18 23:56:20
如果你的模型中含有 datetime 类型的字段,表单中需要用户输入日期和时间,那么你如何保证不同用户输入的时间都遵循一定的格式 (DD/MM/YYYY 或者 YYYY-MM-DD) 是个必须要考虑的问题。一个更好的方式是在前端使用日期时间选择器 DateTimePicker,以日历的形式统一选择输入时间,如下图所示。小编今天将尝试以最少的代码教你实现如何在 Django 项目中实现日期时间选择器 DateTimePicker。

示范模型
假如我们有如下一个 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 发布日期仍然是文本输入格式,如下图所示:

接下来就是见证奇迹的时刻了。你在模板中稍微增加几行 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 %}
此时你把鼠标移动到日期输入栏,美观的日期和时间选择器就出现了,如下图所示:

工作原理
这几行 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, 强烈推荐。
来源:http://www.bigyoung.cn/posts/75/
猜你喜欢
- 前端使用ajax进行数据交互时:$.ajax({ cache: false, type: "POST", url: {%
- 1、JavaScript方法:document.getElementById("id").innerHTML; (1)实
- 一、导入所需的库import turtleimport randomfrom math import *二、生成斐波那契数列斐波那契数列是指
- 基本介绍图像的全景拼接,即“缝合”两张具有重叠区域的图来创建一张全景图。其中用到了计算机视觉和图像处理技术有:关键点检测、局部不变特征、关键
- 什么是自省?在日常生活中,自省(introspection)是一种自我检查行为。在计算机编程中,自省是指这种能力:检查某些事物以确定它是什么
- 源代码如下:#-*- coding:utf-8 -*- def check_exsit(process_name): import win3
- 如果直接对大文件对象调用 read() 方法,会导致不可预测的内存占用。好的方法是利用固定长度的缓冲区来不断读取文件内容。即通过yield。
- 本文实例讲述了Python变量、数据类型、数据类型转换相关函数用法。分享给大家供大家参考,具体如下:python变量的使用不需要进行类型声明
- 1.c#可以调用msyql的导入导出命令,但是需要先判断客户机是否安装了mysql,及其安装mysql的路径问题。2.查询mysql安装路径
- 在数据预处理过程中可能需要将列的顺序颠倒,有两种方法。import numpy as npimport pandas as pddf = p
- Onunload,onbeforeunload都是在刷新或关闭时调用,可以在<script>脚本中通过window.onunlo
- 该算法实现对列表中大于某个阈值(比如level=5)的连续数据段的提取,具体效果如下:找出list里面大于5的连续数据段:list = [1
- 今天在公司实在没有事做,突然就想到写下商城的购物车的前端框架,当然我这里只有购物车的增删改查,也许写的并不是那么完善,但最重要的是一个入门,
- 从微信小程序官方发布的公告中我们可获知:小程序体验版、开发版调用 wx.getUserInfo 接口,将无法弹出授权询问框,默认调用失败,需
- pip install *** :Cannot connect to proxy在使用pip install 安装任何新的包都会出现下面错误
- 看代码吧~import gcfor x in list(locals().keys())[:]: del loca
- 一、使用xlrd对excel进行数据读取excel表格示例:安装xlrd库pip install xlrd导入xlrd库import xlr
- 前言在python 中有时候我们用数组操作数据可以极大的提升数据的处理效率,类似于R的向量化操作,是的数据的操作趋于简单化,在python
- 统计每天的数据量变化,数据量变动超过一定范围时,进行告警。告警通过把对应的参数传递至相应接口。python程序如下#!/usr/bin/py
- 本文实例讲述了Python分析微信好友性别比例和省份城市分布比例的方法。分享给大家供大家参考,具体如下:安装itchatpip instal











