python - django上传音频文件返回null
问题描述
模型.py
from django.db import models
from datetime import datetime
class Song(models.Model):
title = models.CharField(max_length=64)
audio_file = models.FileField()
genre = models.CharField(max_length=64)
created_at = models.DateTimeField(default=datetime.utcnow)
序列化程序.py
from rest_framework import serializers
from . import models
class SongSerializer(serializers.ModelSerializer):
class Meta:
model = models.Song
fields = '__all__'
class CreateSongSerializer(serializers.ModelSerializer):
class Meta:
model = models.Song
fields = ['title', 'audio_file', 'genre']
视图.py
from . import models, serializers
from rest_framework import viewsets, status
from rest_framework.response import Response
from rest_framework.views import APIView
from rest_framework.decorators import parser_classes
from rest_framework.parsers import FileUploadParser
class SongView(APIView):
def get(self, request, format=None):
serializer = serializers.SongSerializer(models.Song.objects.all(), many=True)
return Response(serializer.data)
class PostSong(APIView): # here is the class <------------
serializer_class = serializers.CreateSongSerializer
def post(self, request, format=None):
serializer = self.serializer_class(data=request.data)
if serializer.is_valid():
title = serializer.data.get('title')
genre = serializer.data.get('genre')
filename = serializer.data.get('audio_file')
song = models.Song(title=title, audio_file=filename, genre=genre)
return Response(serializers.CreateSongSerializer(song).data, status=status.HTTP_200_OK)
return Response({'Bad Request': 'Invalid Data'}, status=status.HTTP_400_BAD_REQUEST)
网址.py
from django.urls import path
from . import views
urlpatterns = [
path('songs/', views.SongView.as_view(), name='songs'),
path('add-song/', views.PostSong.as_view(), name='add-song')
]
回复
{
"title": "123",
"audio_file": null,
"genre": "123"
}
一切正常,因为当我尝试上传文件时它变为空,我尝试实现 parser_class 但它摆脱了表单,所以我实际上无法发布数据,我该如何解决这个问题?
解决方案
推荐阅读
- go - 如何在 Gorm 中按角色过滤用户?
- r - 过滤时间戳 R 中的最后 n 个观测值
- swift - 当通过属性文本值更改添加 lineSpacing 时,TextView UIViewRepresentable 重置 UndoManager
- reactjs - Redux-actions Jest 测试
- javascript - 如何获取所有服务器成员 ID?不和谐.js
- visual-studio-2019 - 为什么我的自动化 Visual Studio 构建突然停止构建?
- angular - Ionic5:“离子构建”和“离子构建--prod”之间的区别
- php - yii2 kartik 多选与关系表错误“调用数组上的成员函数 isAttributeRequired()”
- node.js - 如何在 adonis 5 下载 pdf
- postgresql - 使用 pg_hint_plan 时相同查询的 Postgres 查询计划更改