如何在 Django 中使用 HTML 输入类型文件作为 FileField 类型?
Posted
技术标签:
【中文标题】如何在 Django 中使用 HTML 输入类型文件作为 FileField 类型?【英文标题】:How to use HTML input type file as FileField type in Django? 【发布时间】:2015-09-16 23:03:40 【问题描述】:我的 DJango 模板中有以下代码,其中 div 和输入类型文件的样式相同,因此当您单击图像时,将显示上传窗口。
<div class="prof" style="background:url(https://c1.staticflickr.com/3/2669/5830411257_b21bf9e931_b.jpg);background-size:cover">
<input type="file" id="uploadpic" class="uploadpic" />
</div>
演示:
http://jsfiddle.net/sathish_opr/s54uxkx9/
我的要求是我能不能把这个模板的输入类型文件用作Django模型中的FileField,这样这个输入文件的html标签就可以访问upload_to了。
我正在寻找一些类似的工作模型,但还没有找到。 这怎么可能?有什么建议吗?
在我的 Models.py
class td_profpic(models.Model):
id = models.CharField(max_length=300,blank=True)
propicpath = models.FileField(upload_to=get_upload_file_name)
class Meta:
managed = False
db_table = "td_profpic"
def get_upload_file_name(instance,filename):
return "%s_%s" % (str(time()).replace('.','_'),filename)
在这种情况下,如何将模板的输入类型文件标签与模型字段(FileField - propicpath)相关联?
【问题讨论】:
【参考方案1】:您可以为此使用 Django ModelForm。 为您的模型“td_profpic”创建一个表单:
from django.forms import ModelForm
# import your model from your application
Class td_profpicForm(forms.Form):
model= td_profpic
然后在您的视图中导入此表单:from forms import td_profpicForm
并通过创建视图将其呈现为模板并将此表单作为上下文发送。
在 Django 模板中,将此表单呈现为 form.as_p 或 form.as_table ,它会使用您的字段自动为您创建一个表单。
那么您就不需要为自己创建自定义字段了。
【讨论】:
以上是关于如何在 Django 中使用 HTML 输入类型文件作为 FileField 类型?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用javascript在文本区域中设置输入类型文本中的值? [复制]
Django:为啥我放置在 Django Summernote 中的文本会在我的 HTML 模板中显示 HTML 标记?