Django 提交文件格式不会通过前端保存到模型中



所以我们的目标是让用户在应用程序内上传图像,并使图像显示在屏幕上。

问题是表单不会保存到我制作的模型。我遵循Django Central https://djangocentral.com/uploading-images-with-django/的指导上传我的图像。

我目前所拥有的是用户可以在表单中键入他们的标题,用户可以在其中为他们的图像选择文件,但是当他们单击上传按钮时什么也没有发生。所有发生的事情是,由于某种原因,它将我重定向到主页,但我可以稍后修复它。要在网站上显示的图像的唯一方法是,如果我手动进入管理面板,并在那里上传图像。如果有人能帮忙,我将不胜感激。

view.py

def profile(request):
if request.method == "POST":
form = User_Profile_Form(data = request.POST, files = request.FILES)
if form.is_valid():
form.save()
obj = form.instance
return render(request, "main/profile.html", {"obj":obj})
else:
form = User_Profile_Form()
img = User_Profile.objects.all()
return render(request,"main/profile.html", {"img":img, "form":form})

models.py

class User_Profile(models.Model):
caption = models.CharField(max_length = 100)
image = models.ImageField(upload_to = "img/%y", blank=True)
def __str__(self):
return self.caption

forms.py

from django import forms
from .models import User_Profile
class User_Profile_Form(forms.ModelForm):
class Meta:
model = User_Profile
fields = ("caption", "image")

profile.html

<div class="container">
<form action="." method="post" enctype="multipart/form-data">
{% csrf_token %}
{{form.as_p}}
<button type="submit" class="btn btn-lg btn-success">Upload</button>
</form>
{% if obj %}
<h3>Succesfully uploaded : {{img_obj.caption}}</h3>
<img src="{{ obj.image.url}}" alt="image" class="img-thumbnail" >
{% endif %}
<hr>

{% for x in img %}
{% if forloop.first %}<div class="row ">{% endif %}
<div class="col-lg-4 col-md-4 col-12" >
<div class="text-center mt-2">
<img src="{{x.image.url}}" height="70%" width="70%" class="img-thumbnail" alt="...">
<h2 class="text-center" >{{x.caption}}</h2></div>
</div>
{% if forloop.counter|divisibleby:3 %}
</div>
<div class=row>{% endif %}
{% if forloop.last %}</div>{% endif %}
{% endfor %}
</div>

在模板中改变动作:来自:

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

:

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

.将您重定向到主页

inviews.py

def profile(request):
if request.method == "POST":
form = User_Profile_Form(data = request.POST, files = request.FILES)
if form.is_valid():
form.save()
obj = form.instance
return render(request, "main/profile.html", {"obj":obj, "form":form})
else:
form = User_Profile_Form()
img = User_Profile.objects.all()
return render(request,"main/profile.html", {"img":img, "form":form})

我知道你想做什么,我在我的项目中做过,这是我的代码,为你自己编辑

views.py

pimageupdate = ProfileImageUpdate(request.POST,request.FILES, instance=request.user.userprofile)
if pimageupdate.is_valid():
pimageupdate.save()

我应该注意pimageupdate是从forms.py

获取表单吗?,你应该在你的{{}}代码中添加user,像这样

{{user.userprofile.default_profile_picture}}

改变"post"在表单标签中添加"POST">

希望这个有效,如果你试过了请告诉我

最新更新