Django自带的多对多控件虽然样式普通,却很实用,能避免程序员重复造轮子。
现在就详解如何在前端页面复用此控件,满足自身开发需求。
首先,Djaong的templates中一般会有个base.html,是一切其他网页的父类。在base.html中一定要加入:
{% load static %}
这个是加载配置文件中的:STATIC_URL。然后在setting.py中将STATIC_URL改为如下值:
STATIC_URL = '/static/'
然后,在setting.py所在的目录中新建文件夹static,用于存放你的css以及js文件。
下面就是最重要的部分了,在你要显示控件的网页中加入如下代码:
<link href="{% static "admin/css/forms.css" %}" rel="stylesheet">
<link href="{% static "admin/css/widgets.css" %}" rel="stylesheet">
<link href="{% static "admin/css/overrides.css" %}" rel="stylesheet">
<script src="{% static "admin/js/jquery.init.js" %}"></script>
<script src="{% static "admin/js/admin/RelatedObjectLookups.js" %}"></script>
<script src="{% static "admin/js/core.js" %}"></script>
<script src="{% static "admin/js/SelectBox.js" %}"></script>
<script src="{% static "admin/js/SelectFilter2.js" %}"></script>
<script src="{% static "admin/js/inlines.js" %}"></script>
<script src="/xxxx/admin/jsi18n"></script>
<script>
addEvent(window, "load", function(e) {
SelectFilter.init("id_permissions", "权限", 0, "{% static "admin/" %}");
});
</script>
static之前已经说了,会用/static/将域名和文件目录拼起来,如第一个文件的目录就是:项目域名/static/admin/css/forms.css
多对多控件需要以上代码中所列的css以及js文件,以上文件在django中都有。
最后一个js文件,src="/xxxx/admin/jsi18n",xxxx是指你自己配的项目路径。
然后,你得复写addEvent方法,调用SelectFilter的init方法,将参数依次传进去,参数依次为:
id_permissions--多对多控件的id
权限--多对多控件的名称
0--暂时不记得啦,默认0就行
{% static "admin/" %}--在该目录查找图片文件
按照如上配置后,你就可以在网页中复用django自带的控件了。
网上还有其他的样式文件,可以修改控件的样式,大家可以自己尝试。