django 2.1 rest上传文件并获取最终url
我想在django rest_框架中上传文件,我当前的代码是:django 2.1 rest上传文件并获取最终url,django,Django,我想在django rest_框架中上传文件,我当前的代码是: class get_contract_events_log(APIView): authentication_classes = (BearerTokenAuthentication,) permission_classes = (permissions.IsAuthenticated,) parser_classes = (JSONParser, FormParser, MultiPartParser,)
class get_contract_events_log(APIView):
authentication_classes = (BearerTokenAuthentication,)
permission_classes = (permissions.IsAuthenticated,)
parser_classes = (JSONParser, FormParser, MultiPartParser,)
def post(self, request, contract_id, format=None):
screenshot_file = request.FILES["screenshot_file"]
mouse_event_count = request.data["mouse_events_count"]
keyboard_events_count = request.data["keyboard_events_count"]
contract = Contract.objects.get(id=contract_id)
# file_serializer = FileSerializer(data=request.FILES)
# if file_serializer.is_valid():
# file_serializer.save()
ContractEvent.objects.create(
#....
screenshot_filename=screenshot_file,
screenshot_url="https://upload.wikimedia.org/wikipedia/commons/5/57/Bootstrap-3.1.1-screenshot-jumbotron-example.png",
)
return JsonResponse({"message":"log successfully created"}, status=201)
序列化程序:
class FileSerializer(serializers.ModelSerializer):
class Meta():
model = ContractEvent
fields = ('screenshot_file')
我当前的代码返回错误:
TypeError: The `fields` option must be a list or tuple or "__all__". Got str.
[27/Oct/2018 15:04:25] "POST /contracts/3/events/log HTTP/1.1" 500 18899
如何修复此错误?我需要将屏幕截图\u url替换为上载文件的路径。您的
class FileSerializer(serializers.ModelSerializer):
class Meta():
model = ContractEvent
fields = ('screenshot_file')
正确的
class FileSerializer(serializers.ModelSerializer):
class Meta():
model = ContractEvent
fields = ('screenshot_file',)
在“屏幕截图文件”之后添加,无括号。然后再把你的问题贴出来。