简体   繁体   English

将图像文件上传到数据库

[英]Uploading an image file to database

I am making a social media app and i am adding a edit profile function to it.我正在制作一个社交媒体应用程序,我正在向它添加一个编辑配置文件 function。 But for some reason, the profile image which the user chooses is not being uploaded to the database.但是由于某种原因,用户选择的个人资料图像没有被上传到数据库中。 Please help me to do so.请帮我这样做。

My views.py我的观点.py

def edit_profile(request):
    user = request.user
    user_profile = profile.objects.get(user__username=user)
    Profile = user_profile
    myuser = User.objects.get(username=user)

    if request.method == 'POST':
        try:
            username = request.POST['username']
            name = request.POST['name']
            email = request.POST['email']
            image = request.FILES['img']

            myuser.username = username
            myuser.first_name = name
            myuser.email = email
            myuser.save()
            Profile.user = myuser.username
            Profile.name = myuser.first_name
            Profile.img = image
            Profile.save()

            return redirect('/')
        except:
            return redirect('/')

    else:
        context = {
            'user':user_profile,
            'myuser':myuser,
        }
        return render(request, 'edit_profile.html', context)

my tempateview我的模板

<form action="/users/edit_profile/" method="POST" enctype="multipart/form-data">
{% csrf_token %}

<center>
<img src="{{user.img.url}}" style="border-radius: 50%; widows: 150px;height:150px; margin-left:-50px" onclick="document.getElementById('image').click()"><br>

<span class="click" onclick="document.getElementById('image').click()">Change Profile Picture</span>
</center>
<input type="file" name="img" id="image" accept="image/*" style="display:none"><br><br>

<label> &nbsp;Username </label><br>
<input type="text" name="username" class="edit" value="{{user.user}}" spellcheck="false"><br><br>

<label> &nbsp;Name </label><br>
<input type="text" name="name" class="edit" value="{{user.name}}" spellcheck="false"><br><br>

<label> &nbsp;Email </label><br>
<input type="email" name="email" class="edit" value="{{myuser.email}}" spellcheck="false"><br><br><br>

<input type="submit" value="Save changes" style="width:40%; float:right; margin-right:120px">

</form>

my models.py我的模型.py

class profile(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    name = models.CharField(max_length=100)
    img = models.ImageField(default='default.png', upload_to='profile_pics')

    def __str__(self):
        return "Profile({})".format(self.user.username)

Everything is working.一切正常。 Only the image file cannot be uploaded.只有图像文件不能上传。 Please help.请帮忙。 Thankyou in advance.先感谢您。

this was a problem for me too.这对我来说也是个问题。 i solved this by saving the object like so:我通过保存 object 解决了这个问题,如下所示:

 from django.core.files import File 
 Profile.img.save(image.name  , File(image))
 Profile.save()

hope it helped you.希望它对你有所帮助。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM