我希望所有上传的图像都去/ media /,因此我可以轻松地将URL重新路由到/ media /。一个例子是当我上传图像时,我将上传路径设置为/ images/credentials,所以我希望它保存到/ media/images/credentials /。它确实保存在那里。当用户上载图像时,它会转到我的计算机上我的适当/ media/images/credentials文件夹中。但是当API稍后提供了该映像(API位于/ api/v1/members/credentials时,它将转到http://127.0.0.1:8000/api/v1/members/credentials/images/credentials/。我想要做的是删除第一部分,api/v1/members 。/凭证问题是,它迫使我的网址的文件是如下:Django Rest Framework图像常量URL
if base.DEBUG:
urlpatterns += patterns('',
(r'^api/v1/members/credentials/(?P<path>.*)$', 'django.views.static.serve', {
'document_root': base.MEDIA_ROOT}))
这仅适用于这一个API,但我想对所有API网址的所有图像一个URLPATTERN进入我。宁愿所有的图像链接时提供给用户不包括API部分,所以我不必为每个API做一个单独的urlpattern条目。我有很多API服务图像,而不仅仅是/ credentials /。
模式是这样的:
class Credential(models.Model):
"""Used to store various credentials for member validation."""
document_image = models.ImageField(
upload_to=get_upload_path(instance="instance",
filename="filename.ext",
path='images/credentials/'))
设置:
MEDIA_ROOT = os.path.join(BASE_DIR, "sailistio", "media")
其它相关URL条目:
基本URL:
url(r'^api/v1/members/', include(members_urls, namespace="members")),
会员网址:
url(r'^credentials/$', views.UserCredentialList.as_view(), name='user-credential-list'),
谢谢你的帮助!
编辑:
class UserCredentialList(generics.ListCreateAPIView):
permission_classes = (IsCredentialOwnerOrAdmin,)
serializer_class = CredentialSerializer
"""
This view should return a list of all the purchases
for the currently authenticated user.
"""
def get_queryset(self):
"""
This view should return a list of all models by
the maker passed in the URL
"""
user = self.request.user
return Credential.objects.filter(member=user)
def perform_create(self, serializer):
serializer.save(member_id=self.request.user.id)
这里是这种情况下,你需要它:
class CredentialSerializer(serializers.ModelSerializer):
class Meta:
model = Credential
fields = (
'id',
'credential_type',
'credential_number',
'date_received',
'is_verified',
'date_verified',
'document_image',
)
def is_valid(self, raise_exception=False):
imageHandler = ImageHandler()
self._kwargs["data"]["document_image"] = imageHandler.convertImage(self._kwargs["data"]["document_image"])
return super(CredentialSerializer, self).is_valid()
让我看看你的'UserCredentialList' – outoftime
添加它,谢谢! – Diesel