1、项目部署后发现部分页面的样式丢失,是因为在nginx中配置的static路径中未包含。
解决:在settinfs.py中添加:
STATIC_ROOT = os.path.join(BASE_DIR, "static_all")
然后执行:
python3 ./manage.py collectstatic
项目下自动生成static_all文件夹,里面包含所有的静态文件,然后修改nginx的配置文件,指向该文件路径。
2、自定义模板参数
如果希望向页面传递参数,类似于{{MEDIA_URL}}这种,我们可以模仿django添加自己的处理方法:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')]
,
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
# 'django.template.context_processors.media', # 配置html页面获取MEDIA_URL路径
'configs.sysconf.media'
],
},
},
]
注释掉django的django.template.context_processors.media,添加自己的configs.sysconf.media,内容是:
from configs.models import ServerConfig
def media(request):
"""
Adds media-related context variables to the context.
"""
try:
serverConfig = ServerConfig.objects.all()[0]
image_server = serverConfig.img_server_ip + ':' + serverConfig.img_server_port.__str__()
except Exception:
image_server = '127.0.0.1'
return {'MEDIA_URL': 'http://' + image_server + '/images/',
'VOD_URL': image_server + '/vods/',
'ANNEX_URL': image_server + '/annexs/',
}
这样就可以在页面配置模板参数。