From 1dc91418569d82ce37cf658471969ddc5a7b69c8 Mon Sep 17 00:00:00 2001 From: shihan11 Date: Tue, 9 Jun 2026 16:00:58 +0800 Subject: [PATCH] update static url settings --- apps/user/views.py | 7 +++++-- config/settings.py | 4 ++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/apps/user/views.py b/apps/user/views.py index 4fd96e8..e62a227 100644 --- a/apps/user/views.py +++ b/apps/user/views.py @@ -239,12 +239,15 @@ def _build_banner_url(request, banner_value): - 空值回退到 settings.DEFAULT_INSTITUTION_BANNER - 已是 http(s) 完整 URL 时原样返回 - - 否则视为相对 STATIC_URL 的静态路径,拼成绝对 URL + - 否则视为相对 STATIC_URL 的静态路径,拼成绝对 URL; + 若配置了 settings.STATIC_PUBLIC_PREFIX(如线上 '/server'),则补在前面, + 以适配 Nginx 砍掉 /server 子路径前缀的部署。 """ value = banner_value or settings.DEFAULT_INSTITUTION_BANNER if value.startswith(('http://', 'https://')): return value - path = '/' + settings.STATIC_URL.strip('/') + '/' + value.lstrip('/') + prefix = settings.STATIC_PUBLIC_PREFIX.rstrip('/') + path = prefix + '/' + settings.STATIC_URL.strip('/') + '/' + value.lstrip('/') return request.build_absolute_uri(path) diff --git a/config/settings.py b/config/settings.py index e2eed15..238d4f3 100644 --- a/config/settings.py +++ b/config/settings.py @@ -109,6 +109,10 @@ USE_TZ = True STATIC_URL = 'static/' STATICFILES_DIRS = [BASE_DIR / 'static'] +# 静态资源公网前缀:本地直连为空;线上 Nginx 把应用挂在 /server 子路径下时设为 '/server' +# (只用于生成对外可访问的静态 URL,不改变 Django 实际提供文件的路径) +STATIC_PUBLIC_PREFIX = os.getenv('STATIC_PUBLIC_PREFIX', '') + # 机构 Banner 默认图(当 Institution.banner_url 为空时回退使用,相对 STATIC_URL) DEFAULT_INSTITUTION_BANNER = 'institutions/default_hospital.png'