2015-06-21 99 views
0

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

讓我看看你的'UserCredentialList' – outoftime

+0

添加它,謝謝! – Diesel

回答

0

簡單的答案...

有一個MEDIA_URL設置,我需要設置爲'/ media /'在我的基本配置文件中。

相關問題