由于按钮位于字段内,因此表单中图片的“文件上载”外观不正常。虽然它在上传的形式中显示,但它不会发布。当我查看firebug时,我可以看到File图像的字段没有通过其他名称字段发送,因此表单永远不会验证。
以下是它的外观
以下是模型中的定义。
picture = models.ImageField(upload_to=user_directory_path)
因此,当Django创建表单时,它会以奇怪的方式为文件提交
我应该如何在模型中定义文件字段?或错误在哪里?
表格有此指示>
{% load widget_tweaks %}
<form method="post" action="{% url 'book_create' %}" class="js-book-create-form" enctype="multipart/form-data">
{% csrf_token %}
<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">Create a new book</h4>
</div>
<div class="modal-body">
{% for field in form %}
<div class="form-group{% if field.errors %} has-error{% endif %}">
<label for="{{ field.id_for_label }}">{{ field.label }}</label>
{% render_field field class="form-control" %}
{% for error in field.errors %}
<p class="help-block">{{ error }}</p>
{% endfor %}
</div>
{% endfor %}
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="submit" class="btn btn-primary">Create book</button>
</div>
</form>
表格的处理方式如下:
data = dict()
if request.method == 'POST':
form = NewStockOfBookssForm(request.POST, request.FILES)
if form.is_valid():
form.save()
data['form_is_valid'] = True
else:
data['form_is_valid'] = False
答案 0 :(得分:0)
您是否为表单标记设置了enctype="multipart/form-data"
?对于具有上传/图像输入的字段,这是必需的,如文档中所述。
你是如何管理表格的?如果你使用FormView
(或派生的)CBV,这是为你完成的,但如果没有,你需要明确地将files=(request.FILES or None)
传递给表单的构造函数。
答案 1 :(得分:0)
你可以保存链接,这种方式我认为更好:
1 :在您保存在数据库中的图片字段中。(太重)但是在链接方式中你太轻了。
2 :在链接方式中你可以用静态文件方式设置它。(可以删除简单)。(图像域有很多问题但链接也很容易管理)< / p>
我希望它能帮助你选择。
答案 2 :(得分:0)
表格中图片的文件上传外观不正常 按钮在场内。
至于这个问题,我找到的解决方案是在按钮上添加一个自定义css类,然后根据需要进行调整。整个字段跨度充当按钮,但看起来并不糟糕。