python日期选择框_Django项目中如何使用日期时间选择器DateTimePicker
如果你的模型中含有datetime类型的字段,表单中需要用户输入日期和时间,那么你如何保证不同用户输入的时间都遵循一定的格式(DD/MM/YYYY 或者YYYY-MM-DD)是个必须要考虑的问题。一个更好的方式是在前端使用日期时间选择器DateTimePicker,以日历的形式统一选择输入时间,如下图所示。小编今天将尝试以最少的代码教你实现如何在Django项目中实现日期时间选择器DateTime
如果你的模型中含有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
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.as_p }}
{% csrf_token %}
{% endblock %}
此时当你创建文章时,你将看到pub_date发布日期仍然是文本输入格式,如下图所示:
接下来就是见证奇迹的时刻了。你在模板中稍微增加几行js的代码,如下所示:
{% block content %}
{{ form.as_p }}
{% csrf_token %}
{% endblock %}
{% block js %}
$(function () {
$("#id_pub_date").datetimepicker( {
format:'Y-m-d H:i',
});
});
{% 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, 强烈推荐。
大江狗
2019.12.9
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)