django-rest-framework - 从 FileField 下载 DRF 文件
问题描述
我使用 DRF REST 来实现文件上传功能。
模型.py
class NetworkConfig(models.Model):
ipaddress = models.GenericIPAddressField(verbose_name='Device IP')
configfile = models.FileField(max_length=300,upload_to='networkconfig/')
create_time = models.DateTimeField(auto_now_add=True)
class Meta:
verbose_name = 'NetworkConfig'
verbose_name_plural = verbose_name
db_table = 'NetworkConfig'
def __str__(self):
return self.ipaddress
序列化程序.py
class NetworkConfigSerializer(serializers.ModelSerializer):
create_time = serializers.DateTimeField(read_only=True, format='%Y-%m-%d %H:%M:%S')
class Meta:
model = NetworkConfig
fields = '__all__'
设置.py
MEDIA_ROOT = '/tmp/'
视图.py
class NetworkFilesViewSet(ViewSet):
parser_classes = (MultiPartParser, FormParser)
def upload(self,request):
file_serializer = NetworkConfigSerializer(data=request.data)
if file_serializer.is_valid():
file_serializer.save()
return Response(file_serializer.data, status=status.HTTP_201_CREATED)
return Response(file_serializer.errors, status=status.HTTP_400_BAD_REQUEST)
网址.py
path(r'api/networkconfig', views.NetworkFilesViewSet.as_view({'post': 'upload'})),
当我使用邮递员上传文件时,MySQL 表如下所示:
id | ipaddress | configfile | create_time
1 | 10.12.2.19 | networkconfig/test.txt | 2020-09-09 19:17:58.723851
和 /tmp/networkconfig/ 中的文件存储。
现在我如何使用 FileField 中的 REST 下载这个文件?
解决方案
推荐阅读
- reactjs - 如何从 graphql() 创建的高阶组件中获取 MutationResult
- python - 执行 Python 代码时出错。没有名为“angelheap”的模块
- python - 如何在 Python 3.6 中按数字顺序对字符串列表进行排序?
- javascript - javascript路径不正确
- javascript - for...of 循环完成后变量的值是多少?
- ruby - 为什么在使用私钥加密时不能使用 RSA OAEP 填充?
- angular - NGRX Effect 不过滤操作/管道内的功能被执行
- javascript - 反应表 - 不刷新内容
- lua - 尝试在 FiveM essentialmode 上索引一个 nil 值(字段“?”)
- asp.net - 如何以混合(数据库+内存)方式存储会话信息?