【发布时间】:2017-10-30 01:33:34
【问题描述】:
我可以上传现场时间和员工,但我不能上传图片到出席图片
模型
class Attendance(models.Model):
time = models.DateTimeField(default=datetime.now, blank=True)
employee = models.ForeignKey(Employee, related_name='employees')
attendance_pic = models.ImageField(upload_to='attendance_pics',null = True)
序列化器
class AttendanceSerializer(serializers.ModelSerializer):
class Meta:
model = Attendance
fields = '__all__'
观看次数
class AttendanceList(APIView):
def get(self,request):
model = models.Attendance
attendances = model.objects.all()
serializer = AttendanceSerializer(attendances, many = True)
return Response(serializer.data)
def post(self,request):
now = timezone.now()
serializer = AttendanceSerializer(data=request.data)
serializer.is_valid(raise_exception=True)
if serializer.is_valid():
serializer.save(time=now)
# print (serializer.validated_data)
# emp = serializer.validated_data.get("employee")
# obj = models.Attendance.objects.create(time=now, employee=emp)
return Response("Success", status=status.HTTP_201_CREATED)
# return Response(AttendanceSerializer(obj).data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
请求
f = open("pic.jpg","rb")
r = requests.post(self.url,data={"employee":ID,"attendace_pic":f})
如果我用 base64.encodebase64 对 f 进行编码,序列化程序将允许 request.data,但它会变为 None,我无法对其进行解码,如果我只是通过它而不编码序列化程序将不允许。
或者我应该使用 FileUploadParser。
【问题讨论】:
-
无法解码是什么意思?您能否向我们展示您的请求处理代码以及发生了什么?
-
@AlVaz 使用 base64.encodebase64 的结果 {'employee': ['25'], 'attendance_pic': ['/9j/4AAQSkZJ...'] } 但是当我使用 decodebase64 时,结果是 None (我认为它没有通过序列化程序)我接下来应该做什么?
标签: python django django-rest-framework python-requests