Django ImageField返回完整url

Django ImageField返回完整url
  • models.py

    class Logo(BaseModel):
        """
        logo表
        """
        Logo_TYPE = (
            (0, "安全意识学习"),
            (1, "产品与服务"),
            (2, "内网设备类型"),
            (3, "其他")
        )
        title = models.CharField(max_length=50, null=True, blank=True, default="", unique=True, verbose_name="标题")
        logo = models.ImageField(upload_to='logos', default='TYPE_UNKNOWN.png', verbose_name="logo地址")
        logo_type = models.IntegerField(choices=Logo_TYPE, default=0, verbose_name="logo类型")
    
        class Meta:
            verbose_name = 'logo信息表'
            verbose_name_plural = verbose_name
    
  • views.py

    logo_obj = Logo.objects.first()
    res = {
             "logo": request.build_absolute_uri(logo_obj.logo.url)
          }
    return Response(data={"Msg": "ok", "Data": res, "Code": 0}, status=status.HTTP_200_OK)
    
  • 如何在返回的url里协议使用https

    • django配置文件

      SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')  # 设置请求协议为https
      
    • nginx配置文件

      proxy_set_header X-Forwarded-Proto $scheme;
      
    • 完整的nginx配置文件

      server {
          listen 80;
          server_name api-test.wiguard.wiwide.com;
          rewrite ^(.*)$ https://${server_name}$1 permanent;
      }
      
      server {
          listen 443 ssl;
      
          ssl_certificate     /home/prod/softwares/nginx/ssl/1_api-test.wiguard.wiwide.com_bundle.crt;
          ssl_certificate_key /home/prod/softwares/nginx/ssl/2_api-test.wiguard.wiwide.com.key;
      
          ssl_session_cache   shared:SSL:10m;
          ssl_session_timeout 10m;
      
          server_name api-test.wiguard.wiwide.com;
          charset     utf-8;
      
          client_max_body_size    16m;
          client_body_buffer_size  16m;
      
      
          proxy_set_header            Host $host;
          proxy_set_header            X-real-ip $remote_addr;
          proxy_set_header            X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_set_header X-Forwarded-Proto $scheme;
      
          location / {
             add_header Access-Control-Allow-Origin *;
             proxy_pass http://127.0.0.1:8200;
          }
      
          location ^~ /static {
             alias /home/prod/deploys/wgls/static;
          }
      
      
          location ^~ /media {
             alias /home/prod/deploys/wgls_media;
          }
      
      }
      
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值