首页 > 解决方案 > 无法将图像文件上传到我的 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,但也失败了。

标签: djangodjango-modelsdjango-formsdjango-views

解决方案


你失踪了enctype="multipart/form-data"。你的 html 表单应该是,

<form action="#" method="post" enctype="multipart/form-data">

推荐阅读