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; } }
-