Django静态文件的管理

Django静态资源的路径主要通过STATIC_URL和STATICFILES_DIRS来设置,由此实现不同的管理方式。

管理方式

Django中管理静态资源一般有两种方式。
第一种是在每个应用(app)的目录下都有一个static文件夹,该应用的静态资源就存放在这里面。
目录结构如下:

mysite/
    manage.py
    mysite/
        __init__.py
        settings.py
        urls.py
        asgi.py
        wsgi.py
        static/
    blog/
	    __init__.py
	        settings.py
	        urls.py
	        asgi.py
	        wsgi.py
	        static/

第二种是在与应用同级的目录下创建一个static文件夹,然后再在这个文件夹中进行区分不同应用的静态资源,这种方式可以对所有静态进行统一的管理。
目录结构如下:

mysite/
    manage.py
    mysite/
        __init__.py
        settings.py
        urls.py
        asgi.py
        wsgi.py
    blog/
	    __init__.py
	        settings.py
	        urls.py
	        asgi.py
	        wsgi.py
	static/

setting.py中的设置

用上面的应用blog来举例,当访问blog应用中的网页时需要静态资源时,会去blog应用下的static文件夹中寻找。这种就是上面提到的第一种管理的方式。

STATIC_URL设置的是在访问静态资源时需要通过该url,例如要访问位于static文件夹下名为x的图片,那么可以这么访问 127.0.0.1:8000/static/x.jpg,如果修改STATIC_URL=’/top/,那么刚刚那样就不能再访问静态资源了,需要这样进行访问127.0.0.1:8000/static/x.jpg

Django有一个STATICFILES_DIRS能用来设置静态资源路径。
通常是这样的形式:

"""
	 Django官网的描述
		如果你想用一个额外的命名空间来引用其中一个位置的文件,你可以可选的提供一			个前缀作为 (prefix, path) 的元组,例如:
"""
STATICFILES_DIRS = [
    ( BASE_DIR / "static",  # 设置一个总的静态资源路径
    '/var/www/static/',
]

STATICFILES_DIRS 中可以指定多个静态资源路径,一般用于实现上面所说的第二种的管理方式。STATICFILES_DIRS指定一个static文件路径,然后所有应用的静态资源都存放在这个下面。

在使用第一种管理方式的时候,一般来说有些静态资源并不一定就是一个应用会使用到,有可能多个应用都要使用一些相同的静态资源,那么可以再使用第二种管理方式,将一些共用的资源放在一起。这时候就会出现一个问题,Django无法区分要使用本应用下的静态资源还是外层的静态资源,这时可以给外部静态资源路径添加一个prefix,用于区分。

STATICFILES_DIRS = [
	   #  (prefix, path)
    ("out", BASE_DIR / "static"),  # 设置一个总的静态资源路径
    '/var/www/static/',
]

设置了prefix之后,可以用这样的形式来访问外层文件夹的静态资源(假设static下有bg.img这个文件):

	{{ static "out/bg.img"}}

当需要访问外层静态资源就加上 设置的prefox/ 然后再加上资源的路径,访问本应用中的直接写资源路径即可。

参考链接:
Django官网 STATICFILES_DIRS
Django官网 管理静态文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值