Django使用CreateView创建帖子时无法正常上传图片问题求助
故障根因
你的前端表单没有配置文件上传所需的enctype属性,浏览器提交表单时不会将选中的图片文件传输给后端,导致Django表单校验时识别不到图片上传,触发必填项报错。Django Admin后台的表单默认自动添加了该属性,因此后台上传功能正常。
解决方案
仅需修改creat-post.html中的<form>标签,添加enctype="multipart/form-data"属性即可,修改后的完整模板代码如下:
{% extends "home/base.html" %} {% load crispy_forms_tags %} {% block content %} <div> <form method="POST" enctype="multipart/form-data"> <fieldset> <legend>Creat Post</legend> {% csrf_token %} {{ form|crispy }} </fieldset> <button class="btn btn-primary" type="submit">Post</button> </form> </div> {% endblock %}
补充说明
如果你后续不使用Django通用视图、自定义表单处理逻辑时,需要手动将request.FILES传入表单实例,示例如下:
form = PostForm(request.POST, request.FILES)
当前你使用CreateView通用视图,无需额外修改视图代码,模板修改后即可正常使用。
内容的提问来源于stack exchange,提问作者Ahmed
相关产品推荐
相关产品推荐

