Django开发的应用程序中使用admin自带小控件(以实现日历功能的AdminDateWidget为例)...

AdminDateWidget 简介

AdminDateWidget是admin自带的日历小控件,在admin应用程序中用于Datefield字段,其效果如下图所示:

屏幕快照 2017-03-31 下午3.37.45
AdminDateWidget位于django.contrib.admin.widgets.py中。

在其它应用程序中使用AdminDateWidget

使用AdminDateWidget需要修改form及模板。

修改form

首先,导入AdminDateWidget:
from django.contrib.admin.widgets import AdminDateWidget
然后,重设DateField字段的widget:

class TestForm(forms.Form):

    start_time = forms.DateField(widget=AdminDateWidget, label='start time')

修改模板

假设模板名称为history.html。
在history.html的head中,增加
{{ form.media }}
其中,form为views.py中定义的view返回值传递的TestForm实例,即:

def testwidget(request):
    form = TestForm()
    return render(request, 'myapp/history.html', {'form': form})

form.media可以被render渲染为:

<script type="text/javascript" src="/static/admin/js/calendar.js"></script>
<script type="text/javascript" src="/static/admin/js/admin/DateTimeShortcuts.js"></script>


因此,也可以直接在head中增加上述两个JavaScript语句而不使用{{ form.media }}
要使上述两个语句实现功能,还需要以下CSS及JavaScript(放在上述两个语句之前)。

{% load static %}
<link rel="stylesheet" type="text/css" href="/static/admin/css/forms.css" />
<script type="text/javascript" src="{% url 'admin:jsi18n' %}"></script>
<script type="text/javascript" src="{% static 'admin/js/core.js' %}"></script>
<script type="text/javascript" src="{% static 'admin/js/vendor/jquery/jquery.js' %}"></script>
<script type="text/javascript" src="/static/admin/js/jquery.init.js"></script>
<script type="text/javascript" src="/static/admin/js/admin/RelatedObjectLookups.js"></script>
<script type="text/javascript" src="/static/admin/js/actions.js"></script>
<script type="text/javascript" src="/static/admin/js/vendor/xregexp/xregexp.js"></script>

即可实现功能。
 


备注:
本文html只实现了功能,不符合Django html模板语言设计规范。

 

转载于:https://my.oschina.net/u/3363145/blog/871661

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值