django media文件的路径问题

问题描述

版本说明: python3.6.5 django 2.0.8 django restframework 3.8
微信小程序开发,使用django作后端。处理照片的程序中,当图片通过ImageField字段上传后,通过django restframework返回的图片url是以http开头而非https(站点采用的是https协议)

字段设置

image = models.ImageField(upload_to='themes/%Y/%m/%d', null=True, blank=True)

media相关设置

MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
MEDIA_URL = '/w3/media/'

对于某个模型实例返回值,期待的其image字段值

"https://mysite.com/w3/media/themes/2018/11/01/example.jpg"

实际得到的返回值:

"http://mysite.com/w3/media/themes/2018/11/01/example.jpg"
阅读 3.1k
1 个回答

自定义ImageField,重新实现to_representation方法即可。

from django.conf import settings
from rest_framework import serializers

domain = 'mysite.com'

class HttpsImageField(serializers.ImageField):
    def to_representation(self, value):
        return 'https://{}{}{}'.format(domain, settings.MEDIA_URL, str(value))
        
class MySerializer(serializers.ModelSerializer):
    ...
    image = HttpsImageField(use_url=False)
    ...
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题