我正在尝试使用 DRF 将图像上传到我的 Django 项目,但出现此错误:
'utf-8' codec can't decode byte 0xfd in position 34: invalid start byte
这是我在 Django 上的做法:
模型
class Project(models.Model):
# relations
supplier = models.ForeignKey(User, on_delete=models.CASCADE, related_name="project_supplier", null=True, blank=True)
client = models.ForeignKey(User, on_delete=models.CASCADE, related_name="project_client", null=True, blank=True)
# fields
created = models.DateTimeField(auto_now_add=True, editable=False,null=True)
name = models.CharField(max_length=200)
cost = models.PositiveIntegerField(null=True, blank=True)
rate = models.PositiveIntegerField(null=True, blank=True)
is_done = models.BooleanField(default=True)
image_1 = models.ImageField(upload_to="upload/images/")
image_2 = models.ImageField(upload_to="upload/images/")
image_3 = models.ImageField(upload_to="upload/images/")
image_4 = models.ImageField(upload_to="upload/images/", null=True, blank=True)
image_5 = models.ImageField(upload_to="upload/images/", null=True, blank=True)
API
@api_view(["POST", ])
def create_new_project(request):
if is_post(request):
lang = request.data["lang"]
name = request.data["name"]
image_1 = request.data["image_1"]
image_2 = request.data["image_2"] if request.data["image_2"] is not "" else None
image_3 = request.data["image_3"] if request.data["image_3"] is not "" else None
image_4 = request.data["image_4"] if request.data["image_4"] is not "" else None
image_5 = request.data["image_5"] if request.data["image_5"] is not "" else None
the_token = request.META.get('HTTP_AUTHORIZATION')[6:]
user = Token.objects.get(key=the_token).user
try:
new_project = Project.objects.create(supplier=user, name=name, image_1=image_1, image_2=image_2,
image_3=image_3,
image_4=image_4, image_5=image_5)
data = model_to_dict(new_project)
return generate_response(True, "Projected added successfully" if lang == "en" else "تم إضافة المشروع بنجاح",
data)
except Exception as e:
return generate_response(False, e, None)
这是我在邮递员上测试它的方法: