我希望我上传的所有图片都能进入/ media /所以我可以轻松地将网址重新路由到/ media /。一个例子是当我上传图像时,我将上传路径设置为/ images / credentials,所以我希望它保存到/ media / images / credentials /。它确实可以妥善保存。当用户上传图像时,它会转到我计算机上正确的/ media / images / credentials文件夹中。
但是,当API稍后提供该图像时(API位于/ api / v1 / members /凭据,它会转到http://127.0.0.1:8000/api/v1/members/credentials/images/credentials/。我想要做的是删除第一部分,即api / v1 / members / credentials。问题是它强制我的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(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 :(得分:0)
简单回答......
我需要在基本配置文件中将'/ media /'设置为MEDIA_URL设置。