我希望所有上傳的圖像都去/ 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