网站首页 > 技术文章 正文
默认情况下,django的ModelForm显示的是图片的路径,其实并不友好。那么现在来修改一下,让它显示为一张缩略图:
在此之前,先打开源文件中的 widgets.py (site-packages/django/forms/widgets.py)看一下:
class ClearableFileInput(FileInput):
clear_checkbox_label = _('Clear')
initial_text = _('Currently')
input_text = _('Change')
template_name = 'django/forms/widgets/clearable_file_input.html'
看template_name的值,打开看一下:
{% if widget.is_initial %}{{ widget.initial_text }}: <a href="{{ widget.value.url }}">{{ widget.value }}</a>{% if not widget.required %}
<input type="checkbox" name="{{ widget.checkbox_name }}" id="{{ widget.checkbox_id }}">
<label for="{{ widget.checkbox_id }}">{{ widget.clear_checkbox_label }}</label>{% endif %}<br>
{{ widget.input_text }}:{% endif %}
<input type="{{ widget.type }}" name="{{ widget.name }}"{% include "django/forms/widgets/attrs.html" %}>
好像看不太懂,但又能看懂一部分,能看出来这就是imagefiled 的html代码,现在将内容拷贝一下,创建一个自己的widgets, 在template文件夹中创建widget文件夹并在其中创建文件 ImageField.html, 将内容拷贝进去,并依葫芦画瓢改一下:
{% if widget.is_initial %}{{ widget.initial_text }}: <img src="{{ widget.value.url }}" width="100" height="50"/>{% if not widget.required %}
<input type="checkbox" name="{{ widget.checkbox_name }}" id="{{ widget.checkbox_id }}" lay-skin="primary">
<label for="{{ widget.checkbox_id }}">{{ widget.clear_checkbox_label }}</label>{% endif %}<br>
{{ widget.input_text }}:{% endif %}
<input type="{{ widget.type }}" name="{{ widget.name }}"{% include "django/forms/widgets/attrs.html" %}>
在应用中创建文件 ImageWidget.py 文件(可以放在应用中的任何包中)
from django.forms.widgets import ClearableFileInput
class ImageWidget(ClearableFileInput):
template_name = 'widget/ImageField.html'
tempate_with_clear = ''
继承ClearableFileInput, template_name 改成刚创建的html模版.
在model form中使用:
class NodesForm(ModelForm):
class Meta:
model = Nodes
exclude = ('site','order_num', 'node_path', 'node_level', 'node_group')
# 如果有很多image字段,可以这样
widgets_fields_dict = {k: ImageWidget for k in ("picture", "face_picture", "icon", 'icon_sel', "image1", 'image2', 'image3', 'image4')}
widgets = widgets_fields_dict
下面看看效果:
猜你喜欢
- 2024-11-23 轻量图片查看器-imageGlass
- 2024-11-23 「正点原子FPGA连载」第十八章Linux内核移植
- 2024-11-23 OpenShift 4 概念 - ImageStream,Image和Image Registry
- 2024-11-23 图片处理工具,FocusOn Image Viewer软件体验
- 2024-11-23 深入分析ImageMagick的Shell注入漏洞
- 2024-11-23 一键部署!markdown-to-image:将 Markdown 转为海报的编辑器!
- 2024-11-23 手机误删照片怎么恢复?这款免费照片恢复App你值得拥有
- 2024-11-23 Image Enhance Pro for Mac(图像处理工具)中文版
- 2024-11-23 WiseImage Pro——为AutoCAD开发的插件工具推荐
- 2024-11-23 使用ImageJ进行运动粒子分析
- 标签列表
-
- content-disposition (47)
- nth-child (56)
- math.pow (44)
- 原型和原型链 (63)
- canvas mdn (36)
- css @media (49)
- promise mdn (39)
- readasdataurl (52)
- if-modified-since (49)
- css ::after (50)
- border-image-slice (40)
- flex mdn (37)
- .join (41)
- function.apply (60)
- input type number (64)
- weakmap (62)
- js arguments (45)
- js delete方法 (61)
- blob type (44)
- math.max.apply (51)
- js (44)
- firefox 3 (47)
- cssbox-sizing (52)
- js删除 (49)
- js for continue (56)
- 最新留言
-