将图像从图像字段获取到views.py模型



我正在Django制作一个社交媒体网站。我有一个新帖子的页面。它有一个带有文件字段的表单,用于上传图像。我想把views.py中的图像保存在数据库中。在image变量中,将保存一个带有图像名称的字符串。此外,我不想使用任何像forms.py这样的外部形式。在这里我也尝试过请求。FILES["image"],但它返回了一个空dict.

视图.py

def newpost(request):
if request.method == "POST":
image = request.POST.get("image")
caption = request.POST.get("caption")
post = Post(Image=image,Caption=caption,Owner=request.user.username)
post.save()
return redirect("/")
return render(request,"newpost.html")

newpost.html

{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Spark X- New Post</title>
<link rel="stylesheet" type="text/css" href="{% static 'css/newpost.css' %}">
<script class="jsbin" src="{% static 'js/jquery.js' %}"></script>
<link rel="icon" href="{% static 'images/favicon123.png'%}" type="image" sizes="16x16" class="favicon">
<script>
function readURL(input) {
if (input.files && input.files[0]) {
var reader = new FileReader();
reader.onload = function (e) {
$('#blah')
.attr('src', e.target.result)
};
reader.readAsDataURL(input.files[0]);
}
}
</script>
</head>
<body>
<div class="header">
<span class="topband">
<a href="/"><img src="{% static 'images/back icon.png'%}" class="topicon"></a>
</span>
<div class="logoholder">
<p class="logotext">New Post</p>
</div>
</div>
<div class="mainarea">
<form action="" method="post">{% csrf_token %}
<input type="file" name="image" id="image" accept="image/*" class="imageUpload" onchange="readURL(this);"/>
<label for="image"><img src="{% static 'images/camera icon.png' %}" class="cameraIcon" id="blah"></label>

<input type="text" name="caption" placeholder="Caption...   " class="caption">
<button type="submit" class="submit">Post</button>
</form>
</div>
</body>
</html>

型号.py

class Post(models.Model):
Id = models.AutoField(primary_key=True)
Image = models.ImageField(upload_to="Posts")
date = models.DateTimeField(auto_now=True)
Caption = models.TextField()

我们将非常感谢您的帮助

我已经想通了。刚刚使用的请求。FILES["image"]并添加enctype="image";多部分/形式数据";形式和效果。

最新更新