Python 使用django表单上传文件
谁能帮我找到我的错误。我是django的新手。我想用表单上传一张图片Python 使用django表单上传文件,python,django,forms,Python,Django,Forms,谁能帮我找到我的错误。我是django的新手。我想用表单上传一张图片 #forms.py class ProfileFormSt(forms.Form): image_url = forms.FileField(required=False) #views.py class UpdateProfileStView(FormView): template_name = "home/member_st_form.html" def get(self, request,
#forms.py
class ProfileFormSt(forms.Form):
image_url = forms.FileField(required=False)
#views.py
class UpdateProfileStView(FormView):
template_name = "home/member_st_form.html"
def get(self, request, id):
user = User.objects.get(id=self.kwargs['id'])
profile = StudentProfile.objects.get(user=user)
form = ProfileFormSt(initial={
'image_url': profile.propic,
})
return render(request, self.template_name, {'form': form})
def post(self, request, id):
user = User.objects.get(id=self.kwargs['id'])
form = ProfileFormSt(request.POST, request.FILES)
profile = StudentProfile.objects.get(user=user)
if request.POST.get('image_url'):
profile.propic = request.POST.get('image_url')
profile.save()
return redirect('home:member-profile-st', id)
#member_st_form.html
<form action="" method="post" enctype="multipart/form-data">{% csrf_token %} {{ form.as_p }}
<button type="submit">update</button>
</form>
#models.py
class StudentProfile(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
propic = models.FileField(default="profile-icon.png")
#forms.py
类ProfileFormSt(forms.Form):
image\u url=forms.FileField(必需=False)
#views.py
类UpdateProfilesView(FormView):
template\u name=“home/member\u st\u form.html”
def get(自我、请求、id):
user=user.objects.get(id=self.kwargs['id'])
profile=StudentProfile.objects.get(user=user)
表单=ProfileFormSt(初始={
“image_url”:profile.propic,
})
返回呈现(请求,self.template_名称,{'form':form})
def post(自我、请求、id):
user=user.objects.get(id=self.kwargs['id'])
form=ProfileFormSt(request.POST、request.FILES)
profile=StudentProfile.objects.get(user=user)
if request.POST.get('image_url'):
profile.propic=request.POST.get('image\u url')
profile.save()
返回重定向('home:member profile st',id)
#member_st_form.html
{%csrf_令牌%}{{form.as_p}}
更新
#models.py
班级学生档案(models.Model):
user=models.ForeignKey(用户,on_delete=models.CASCADE)
propic=models.FileField(默认值=“profile icon.png”)
request.POST.get('image\u url')总是返回空的…找不到我做错了什么…您的image\u url是一个文件字段,因此它应该出现在
request.FILES
if request.FILES['image_url']:
profile.propic = request.FILES['image_url']