DRF:找不到图像页



我想将ImageField添加到我的模块中,并按照的指示进行操作

序列化程序返回http://127.0.0.1:8000/media/images/lkdj/unnamed.jpg但链接不起作用(找不到页面(

如何接收有效链接?

增加

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/' # 'http://myhost:port/media/'

型号.py

def name_image(instance, filename):
return '/'.join(['images', str(instance.name), filename])

class Construction(models.Model):
name = models.CharField(max_length=100)
image = models.ImageField(upload_to=name_image, blank=True, null=True)

视图.py

class ConstructionView(viewsets.ModelViewSet):
serializer_class = ConstructionSerializer
queryset = Construction.objects.all()
pagination_class = ConstructionSetPagination
def get_construction_create_serializer(self, *args, **kwargs):
serializer_class = ConstructionSerializer
kwargs["context"] = self.get_serializer_context()
return serializer_class(*args, **kwargs)

def create(self, request, *args, **kwargs):
serializer = self.get_construction_create_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
self.perform_create(serializer)
headers = self.get_success_headers(serializer.data)
response = {"result": serializer.data}
return Response(
response, status=status.HTTP_201_CREATED, headers=headers)

序列化程序.py

class ConstructionSerializer(serializers.ModelSerializer):
coordinates = PointField()
deadline = serializers.DateTimeField(format=TIME_FORMAT)
cameras_number = serializers.SerializerMethodField()
class Meta:
model = Construction
fields = (
'id', 'developer', 'name', 'image', 'address', 'coordinates', 'deadline',
'workers_number', 'machines_number', 'cameras_number',
)
read_only_fields = ('workers_number', 'machines_number', 'cameras_number')

def create(self, validated_data):
instance = super().create(validated_data=validated_data)
return instance

将其添加到项目中的urls.py中。

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

最新更新