Django 如何使用日期時(shí)間選擇器規(guī)范用戶的時(shí)間輸入示例代碼詳解
如果你的模型中含有 datetime 類型的字段,表單中需要用戶輸入日期和時(shí)間,那么你如何保證不同用戶輸入的時(shí)間都遵循一定的格式 (DD/MM/YYYY 或者 YYYY-MM-DD) 是個(gè)必須要考慮的問題。一個(gè)更好的方式是在前端使用日期時(shí)間選擇器 DateTimePicker,以日歷的形式統(tǒng)一選擇輸入時(shí)間,如下圖所示。小編今天將嘗試以最少的代碼教你實(shí)現(xiàn)如何在 Django 項(xiàng)目中實(shí)現(xiàn)日期時(shí)間選擇器 DateTimePicker。

示范模型
假如我們有如下一個(gè) Article 模型,含有 pub_date 字段,其格式是 DateTimeField。
#models.py
class Article(models.Model):
"""文章模型"""
title = models.CharField('標(biāo)題', max_length=200, db_index=True)
pub_date = models.DateTimeField('發(fā)布時(shí)間', 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 %}
此時(shí)當(dāng)你創(chuàng)建文章時(shí),你將看到 pub_date 發(fā)布日期仍然是文本輸入格式,如下圖所示:

接下來(lái)就是見證奇跡的時(shí)刻了。你在模板中稍微增加幾行 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" 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 %}
此時(shí)你把鼠標(biāo)移動(dòng)到日期輸入欄,美觀的日期和時(shí)間選擇器就出現(xiàn)了,如下圖所示:

工作原理
這幾行 Js 的代碼作用是引入 XDSoft DateTimePicker 的 js 代碼和 css 樣式,針對(duì) id_pub_date 的表單字段生成一個(gè) datetimepicker 的實(shí)例,并設(shè)置輸入日期和時(shí)間格式。如果你在模型中 DateTimeField 的字段名為 visit_date, 你只需為 id_visit_date 再生成一個(gè)實(shí)例即可。Django 的表單會(huì)默認(rèn)為每個(gè)輸入字段 id 加上 id_的前綴。
前端基于 JS 的日期和時(shí)間選擇器很多,比如 BootstrapDateTimePicker,F(xiàn)engyuanzhen's DateTimePicker, 但 Django 中最簡(jiǎn)易方便使用的還是 XDSoft DateTimePicker, 強(qiáng)烈推薦。
總結(jié)
到此這篇關(guān)于Django 如何使用日期時(shí)間選擇器規(guī)范用戶的時(shí)間輸入的文章就介紹到這了,更多相關(guān) Django 如何使用日期時(shí)間選擇器規(guī)范用戶的時(shí)間輸入內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python 如何獲取頁(yè)面所有a標(biāo)簽下href的值
這篇文章主要介紹了python 獲取頁(yè)面所有a標(biāo)簽下href的值操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2021-05-05
Python+ChatGPT實(shí)現(xiàn)5分鐘快速上手編程
最近一段時(shí)間chatGPT火爆出圈!無(wú)論是在互聯(lián)網(wǎng)行業(yè),還是其他各行業(yè)都賺足了話題。俗話說:“外行看笑話,內(nèi)行看門道”,今天從chatGPT個(gè)人體驗(yàn)感受以及如何用的角度來(lái)分享一下2023-02-02
Python的Flask框架中實(shí)現(xiàn)分頁(yè)功能的教程
這篇文章主要介紹了Python的Flask框架中實(shí)現(xiàn)分頁(yè)功能的教程,文中的示例基于一個(gè)博客來(lái)實(shí)現(xiàn),需要的朋友可以參考下2015-04-04
Python 限定函數(shù)參數(shù)的類型及默認(rèn)值方式
今天小編就為大家分享一篇Python 限定函數(shù)參數(shù)的類型及默認(rèn)值方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2019-12-12
Jupyter Notebook讀取csv文件出現(xiàn)的問題及解決
這篇文章主要介紹了Jupyter Notebook讀取csv文件出現(xiàn)的問題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01
selenium查找網(wǎng)頁(yè)出現(xiàn)加載卡頓或失敗的解決方法
這篇文章主要為大家詳細(xì)介紹了selenium查找網(wǎng)頁(yè)時(shí)如何處理網(wǎng)站資源一直加載非??D或者失敗的情況,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-10-10
OpenCV3.0+Python3.6實(shí)現(xiàn)特定顏色的物體追蹤
這篇文章主要為大家詳細(xì)介紹了OpenCV3.0+Python3.6實(shí)現(xiàn)特定顏色的物體追蹤,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-07-07

