Pra*_*kla 7 python django django-models django-rest-framework
{
"item_image": [
"The submitted data was not a file. Check the encoding type on the form."
],
"item_thumb": [
"The submitted data was not a file. Check the encoding type on the form."
]
}
Run Code Online (Sandbox Code Playgroud)
我发布的数据是
{
"item_name": "Lural",
"item_image": "/home/prashant/Desktop/suede.png",
"item_thumb": "/home/prashant/Desktop/suede.png",
"item_description": "sd",
"item_mass": 1,
"item_category": "Make Up",
"item_sub_category": "Sub-Feminine",
"item_est_price": "123.12",
"item_wst_price": "120.34"
}
Run Code Online (Sandbox Code Playgroud)
适用于媒体类型应用/ json
@api_view(['GET', 'POST'])
def product_list(request):
if request.method == 'POST':
serializer = ProductSerializer( data=request.data)
# data.encode("base64")
if serializer.is_valid():
serializer.save()
res_msg = {'Success_Message' : 'Created','Success_Code' : 201}
return Response(res_msg)
else:
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Run Code Online (Sandbox Code Playgroud)
class Product(models.Model):
item_category_choices = (
('Make Up','Make Up'),
('Skin Care','Skin Care'),
('Fragrance','Fragrance'),
('Personal Care','Personal Care'),
('Hair Care','Hair Care'),
)
item_name = models.CharField(max_length=50)
item_image = models.ImageField()
item_thumb = models.ImageField()
item_description = models.TextField(max_length=200)
item_mass = models.IntegerField()
item_category = models.CharField(max_length=20,choices = item_category_choices)
item_sub_category = models.CharField(max_length=20)
item_est_price = models.DecimalField(max_digits=15,decimal_places=2)
item_wst_price = models.DecimalField(max_digits=15,decimal_places=2)
def __unicode__(self):
return self.item_name or _('Sprint ending %s')% self.item_avg_price
Run Code Online (Sandbox Code Playgroud)
class ProductSerializer(ModelSerializer):
class Meta:
model = Product
fields = ('id','item_name' ,'item_image','item_thumb','item_description','item_mass','item_category',
'item_sub_category','item_est_price','item_wst_price',)
Run Code Online (Sandbox Code Playgroud)
尝试了很多论坛和第三方套餐,但他们没有任何解决方案.GET工作也很好.
谢谢你的时间
来自 Django 文档 -
\n\n\n\n\n如果您打算允许用户上传文件,则必须确保用于运行 Django 的环境配置为使用非 ASCII 文件名。如果您的环境配置不正确,则在保存文件名包含非 ASCII 字符的文件时,\xe2\x80\x99ll\n 会遇到 UnicodeEncodeError 异常。
\n
因此,将此方法添加到模型中解决了我的问题:
\n\nclass Product(models.Model):\nitem_category_choices = (\n (\'Make Up\',\'Make Up\'),\n (\'Skin Care\',\'Skin Care\'),\n (\'Fragrance\',\'Fragrance\'),\n (\'Personal Care\',\'Personal Care\'),\n (\'Hair Care\',\'Hair Care\'),\n )\nitem_name = models.CharField(max_length=50,verbose_name=\'Product Name\')\nitem_image = models.ImageField(verbose_name=\'Product Image\')\nitem_thumb = models.ImageField(verbose_name=\'Product Thumb\')\nitem_description = models.TextField(verbose_name=\'Product Descriptions\')\nitem_mass = models.CharField(max_length=10,verbose_name=\'Product Weight\')\nitem_category = models.CharField(max_length=20, choices = item_category_choices,verbose_name=\'Product Category\')\nitem_sub_category = models.CharField(max_length=20,verbose_name=\'Product Sub Category\')\nitem_est_price = models.DecimalField(max_digits=12,decimal_places=2,verbose_name=\'East Product Price\')\nitem_wst_price = models.DecimalField(max_digits=12,decimal_places=2,verbose_name=\'West Product Price\')\ndef __unicode__(self):\n return (self.item_name)\ndef image_img(self):\n if self.item_image:\n return u\'<img src="%s" width="50" height="50" />\' % self.item_image.url\n else:\n return \'(Sin imagen)\'\nimage_img.short_description = \'Thumb\'\nimage_img.allow_tags = True\nRun Code Online (Sandbox Code Playgroud)\n