我正在尝试通过ImageField上传图像。我得到的是http 200,但是图像没有保存。
我的模型是:
class RestaurantProfile(BaseModel):
username = models.OneToOneField(User, on_delete=models.CASCADE)
name = models.CharField(max_length=100)
phone = models.CharField(max_length=15)
address = models.TextField(default='', blank=True)
restaurant_image = models.ImageField(upload_to='restaurants', blank=True, null=True)
我的表格是:
class UpdateDetailsForm(forms.Form):
phone = forms.CharField(widget=forms.NumberInput(attrs={'class': 'form-control input-glass', 'id': 'phone',
'placeholder': 'Contact No'}))
address = forms.CharField(widget=forms.Textarea(attrs={'class': 'form-control input-glass', 'id': 'address',
'placeholder': 'Address'}))
restaurant_image = forms.ImageField()
我的查看代码是:
def updatedetails(request):
current_user = request.user.id
rest = RestaurantProfile.objects.get(username=current_user)
rid = rest.id
if request.method == 'POST':
print("fas")
form = UpdateDetailsForm(request.POST, request.FILES)
print(request.FILES)
if form.is_valid():
data = form.cleaned_data
print(data)
phone = data["phone"]
address = data["address"]
image = data["restaurant_image"]
RestaurantProfile.objects.filter(id=rid).update(phone=phone, address=address, restaurant_image=request.FILES['restaurant_image'])
return redirect('dashboard')
else:
print(form.errors)
else:
form = UpdateDetailsForm()
return render(request, "updatedetails.html", {'form': form})
在我的setting.py中,我添加了:
# Media files
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
在url.py中,我添加了:
urlpatterns += staticfiles_urlpatterns()
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
在您的情况下,您需要保存文件手册(例如Django文件上传文档)
或简单的方法
form.py
class UpdateDetailsForm(forms.ModelForm): 类Meta: 模型= RestaurantProfile 字段=(“电话”,“地址”,“餐厅图片”,)
view.py
如果form.is_valid() ,则form = UpdateDetailsForm(request.POST,request.FILES ): form.save()
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句