一、组件代码
展示效果
image.png
介绍整个代码,可以直接使用,使用前引入bootstrap.css,可以一步生成弹窗,可以自定制显示的标题和展示条数
-
参数
参数 | 介绍 |
---|---|
customlist | 自定义显示字段用字典的形式 |
modeltitle | 自定义标题 |
formsobj | form对象 |
namelist | 自定义名字 |
ModelFram | 最后展示模板 |
ModelConnect | 展示的内容自定制 |
customlist 遵守[{'name':"自定义的名字",‘fields’:'字段’}]
from django.utils.safestring import mark_safe
class Edit():
def __init__(self,modeltitle,formsobj,namelist=None,customlist=None):
#自定义展示字段
self.customlist =customlist
#模板的标题
self.modeltitle = modeltitle
#form对象
self.formsobj =formsobj
if not self.customlist:
self.filedlist = []
self.filedslength()
if namelist:
# 定义所有字段的名字
self.namelist = namelist
else:
self.namelist = self.filedlist
#保存所有字段
def filedslength(self):
for i in self.formsobj.fields:
self.filedlist.append(i)
#生成模板
@property
def ModelFram(self):
temp ='''
<div class="modal fade" id="editModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title" id="myModalLabel">%s</h4>
</div>
<div class="modal-body">
<div class="form-horizontal" id="form-calendar-add">
%s
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">取消</button>
<button id="editsave" type="button" class="btn btn-primary">保存</button>
</div>
</div>
</div>
</div>
'''%(self.modeltitle,self.ModelConnect)
return mark_safe(temp)
# 生成模板内容
@property
def ModelConnect(self):
temp = '''
<div class="form-group">
<div class="col-sm-3 control-label">
%s
</div>
<div class="col-sm-9">
%s
</div>
</div>
'''
htmllist = []
if self.customlist:
for i in self.customlist:
temphtml = temp % (i['name'],self.formsobj[i['fields']])
htmllist.append(temphtml)
else:
for i in range(0,len(self.filedlist)):
temphtml = temp%(self.namelist[i],self.formsobj[self.filedlist[i]])
htmllist.append(temphtml)
ret = ''.join(htmllist)
return ret