Django的配置都在setting.py中,静态文件目录static也是在setting.py中配置。
问题
html中使用相对路径寻找css、js文件,本地可以运行,但是在django框架中找不到css、js文件
相关知识
static目录中常放前端使用的css、js、images文件,在django框架中,html文件在templates目录下。
问题分析
django为了安全着想,会将前端的static目录做一个映射,防止被非法或者网站的static的真实路径,
如服务器上static的真实路径为/app/myapp/static
,但是前端引用的时候为/static
,因为这个机制的存在,导致html中直接使用相对路劲寻找static文件夹时找不到的
解决办法
配置setting.py文件,需要配置的参数有两个:STATIC_URL
、STATICFILES_DIRS
STATIC_URL
:映射后,在html文件中使用的路径
STATICFILES_DIRS
:在服务器中的真实路径
举例
static文件夹在服务器山过的真实路径为:/app/myapp/my1/my2/static
在setting.py中,配置STATICFILES_DIRS=/app/myapp/my1/my2/static
、STATIC_URL="static"
,在html中使用static下的css文件,路径为:/static/css/xxx
总结
django的静态文件夹static可以被映射到其他文件夹,不论不敌路径是什么,只要在setting中配置STATIC_URL
、STATICFILES_DIRS
,就可以在html中以/static的方式引入。