0
のファイル名を返します。私は、このHTMLテンプレートを持っているジャンゴRESTフレームワーク:HTMLフォームではなく、ファイル
<html><body>
<form method="POST">
{% render_form submitSerializer %}
<input type="submit" value="Save">
</form>
</body></html>
このシリアライザ
class SubmitSerializer(serializers.ModelSerializer):
submittedFile = serializers.FileField()
class Meta:
model = Submit
fields = {'submittedFile', 'result'}
read_only_fields = {'result'}
と、このビュー
class SubmitView(APIView):
renderer_classes = [renderers.TemplateHTMLRenderer]
def get(self, request, *args, **kwargs):
return Response({'submitSerializer':submitSerializer}, template_name='singlelesson.html')
def post(self, request, *args, **kwargs):
submit = Submit(lesson=lessonInstance, user=self.request.user, submittedFile = self.request.data['submittedFile'])
serializer = SubmitSerializer(submit)
#compare_files returns true if two files contain same text
result = compare_files(correct_solution, self.request.POST.get('submittedFile'))
serializer.save(result = result)
return Response({'submitSerializer':serializer}, template_name='singlelesson.html')
問題はそのフォームでありますファイルをアップロードするのではなく名前をアップロードして、2つのファイルを比較するときにタイプエラーが発生します。フォームでファイルをアップロードするにはどうしたらいいですか?
'request.FILES'は空の辞書であり、' request.data ['submittedFile'] 'は同じエラーを投げます。ドキュメントで述べたように 'parser_classes =(FileUploadParser、)'を追加すると、アップロードごとに400の悪い要求が返される – Zygro
MultiPartParserを使用し、リクエストのコンテンツタイプが以下のようにフォームに正しく設定されていることを確認します: '< form = "post" enctype = "multipart/form-data">「 – fips
はまだ415のサポートされていないメディアタイプを投げます。私が郵便配達所でリクエストを作成すると、それは通過します。 – Zygro