我希望以django形式为models.ImageField
:
<input type="file">
按钮(&#34;选择文件&#34;按钮)在我看来,这似乎是一种在表单中选择图像的正常工作流程,但我似乎找不到任何完全有效的解决方案。我所能找到的只涉及到几个部分:
forms.FileField
的标准。我试过用:
class ImagePreviewWidget(Widget):
def render(self, name, value, attrs=None):
return mark_safe('<img src="/media/%s" width="100px"/>' % escape(value))
对于小部件,我使用的形式如下:
class DesignCampaignForm(ModelForm):
brand_logo = FileField(widget=ImagePreviewWidget)
这是正确显示现有图像的预览,但我无法点击它来选择另一个文件,即使我不能更新预览。
这个简单的用例是否已有解决方案?
答案 0 :(得分:5)
我还没有找到完整的解决方案,所以我做了以下事情:
ClearableFileInput
,呈现图片和<input>
元素<input>
样式,以隐藏它<input>
元素,将<img>
包裹在<label>
并使用for
属性<input>
元素中的选项发生变化可以找到一个要点here。
在我的最终解决方案中(尚未列入要点),我添加了一个按钮,用于何时尚未选择图像。
编辑:Gist仅适用于版本1.11.x之前的Django。
此后class ClearableFileInput
已被删除和更改