如何使用django rest框架显示存储在MEDIA文件夹中的文件URL列表?

问题描述

我正在尝试创建一个django API,可以在其中针对唯一的用户名上传图像(无需任何身份验证),然后可以向该API提供用户名,以列出针对该用户名上传的所有IMAGES。我正在使用\media\文件夹来存储图像。

imgapi / models.py

class File(models.Model):
    file = models.FileField(blank=False,null=False)
    name = models.CharField(max_length=20,default='user')

imgapi / serializers.py

class FileSerializer(serializers.ModelSerializer):
    class Meta:
        model = File
        fields = ['file','name']

imgapi / views.py

class FileUploadView(APIView):
    parser_class = (FileUploadParser,MultiPartParser,)

    def post(self,request,*args,**kwargs):

      file_serializer = FileSerializer(data=request.data)

      if file_serializer.is_valid():
          file_serializer.save()
          return Response(file_serializer.data,status=status.HTTP_201_CREATED)
      else:
          return Response(file_serializer.errors,status=status.HTTP_400_BAD_REQUEST)
        

到目前为止,我可以上传图像和用户名。 它以这种格式给了我答复。

{
    "file": "/media/photo_2020-06-06_02-55-54.png","name": "testUser"
}

imgapi / urls.py

urlpatterns = [
    path('admin/',admin.site.urls),path('upload/',include('imgapi.urls')),path('api/',]


if settings.DEBUG:
  urlpatterns += static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)

如何使用例如给定的链接来检索用户名testUser的URL列表 https:\\localhost:8000\api\list\username=testUser

感谢您拒绝我的问题

我找到了一个可行的解决方案,并且我将更新我的答案。 我得到了上传和过滤功能,都可以对views.py和urls.py

进行一些修改

更新了 views.py

class GetImageViewSet(viewsets.ModelViewSet):
    
    queryset = Image.objects.all()
    serializer_class = ImageSerializer
    
    filter_backends = [DjangoFilterBackend]
    filterset_fields = ['uploaded_by']

更新了 urls.py

router = routers.DefaultRouter()
router.register(r'item',GetImageViewSet,basename='item')

urlpatterns = [
    path('api/',include(router.urls)),] + static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...