django - 无法将图像文件上传到我的 django 数据库
问题描述
我是 Django 框架的新手,我创建了一个 html 表单来上传帖子标题、描述和图像。
图像未上传到数据库。请查看代码并建议我如何解决此问题。
模型.py
class Post(models.Model):
title = models.CharField(max_length=1000, unique=True)
img = models.ImageField(upload_to='pics_post')
desc = models.TextField()
视图.py
def index (request) :
posts = Post.objects.all()
if request.method == 'POST' :
if request.POST.get('newpost') == 'Submit':
# post_title = request.POST.get('posttitle')
# post_desc = request.POST.get('post_desc')
# post_image = request.FILES['post_img']
# post = Post(title = post_title, desc = post_desc, img = post_image)
# post.save()
# return render(request, 'index.html', {'posts' : posts})
formdata = PostForm(request.POST,request.FILES)
if formdata.is_valid():
formdata.save()
return render(request, 'index.html', {'posts' : posts})
else :
pass
return render(request, 'index.html', {'posts' : posts})
else : pass
else :
return render(request, 'index.html', {'posts' : posts})
HTML 表单
<form action="#" method="post">
{% csrf_token %}
<div class="form-group">
<input type="text" class="form-control newpost" name="posttitle" placeholder="Post Title" id="posttitle" required>
</div>
<div class="form-group">
<input type="text" class="form-control newpost" name="post_desc" placeholder="Post Description" id="postdesc" required size="100" required>
</div>
<div class="form-group">
<input type="file" class="newpost" name="post_img" id="postimage" accept=".png, .jpg, .jpeg">
<p class="form-text text-muted">Only png and jpg allowed</p>
</div>
<button type="submit" class="btn btn-primary" name='newpost' id="commentsubmit" style="float: right;" value="Submit">Submit</button>
</form>
views.py 中的注释部分是我正在尝试的,但惨遭失败。然后我尝试添加forms.py,但也失败了。
解决方案
你失踪了enctype="multipart/form-data"
。你的 html 表单应该是,
<form action="#" method="post" enctype="multipart/form-data">
推荐阅读
- python - 如何检查 list2 是否包含 list1 的嵌套列表之一的所有内容?
- python - 编写 Python 3.9 脚本来解析文本文件并根据行的第一个字符执行操作
- python-3.x - 尝试向现有数据框添加内容
- python - 在 Python 中显示图像后,如何将注意力集中在命令行上?
- angular - 可观察性如何工作?
- jquery - 将具有不同类的单击按钮上的 ajax 重构到相同的位置
- unity3d - 创建新 Unity 项目和所有现有项目时出错
- flutter - Flutter TextField 正则表达式清除文本输入
- firebase - Firebase 您的实时数据库有不安全的规则
- c++ - 没有编译器可以为这个 Qt 版本生成代码 - Apple Silicon