我正在尝试创建一个django API,在这里我可以根据唯一的用户名上传图像(无需任何身份验证),然后可以向API提供用户名以列出为该用户名上传的所有图像。我正在使用\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/url.py
urlpatterns = [
path('admin/', admin.site.urls),
path('upload/', include('imgapi.urls')),
path('api/', include('imgapi.urls')),
]
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
如何使用(例如)给定的链接检索用户名testUser
的URL列表
https:\\localhost:8000\api\list\username=testUser
谢谢你否决了我的问题
我已经找到了一个有效的解决方案,我将更新我的答案。 我得到了上传&;过滤,两者都可以在views.py和url.py中进行少量编辑
更新了视图.py
class GetImageViewSet(viewsets.ModelViewSet):
queryset = Image.objects.all()
serializer_class = ImageSerializer
filter_backends = [DjangoFilterBackend]
filterset_fields = ['uploaded_by']
更新了url.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)
目前没有回答
相关问题 更多 >
编程相关推荐