2015-06-21 101 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 /'在我的基本配置文件中。

相关问题