Django中静态文件路径的配置

原创 2015年11月18日 14:33:48
官方文档 https://docs.djangoproject.com/en/1.8/howto/static-files/

里面涉及几个个参数:

(1)第一个参数
STATIC_URL = '/static/'
配置了该参数,那么在app路径下的static/my_app/img/myexample.jpg这个路径的 文件可以这样在模板中使用。
{% load staticfiles %}
<img src="{% static "my_app/img/myexample.jpg" %}" alt="My image"/>
这个路径既然是在app路径下的,那么app自包含的静态文件应该放在这里。形成了 自包含的一个app,这样可以随时把这个app复制到别的项目 中使用。

(2)那么如果有些静态文件不属于app,而是属于项目的,或者操作系统其他绝对路径 的怎么办。
看第二个参数
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "static"),
    '/var/www/static/',
)

这样在模板中是不用变更的,仍然是上面那样的写法,只不过查找路径增加了两 个,可以查找项目下的static路径。


(3)接下来那么如果我要把项目上线了,部署在http服务器中,但是每个app中都有静态文 件,每个project中都有静态文件,路径太多,怎么办?

看第三个参数
STATIC_ROOT = "/var/www/example.com/static/"
在定义完该参数后,我们可以运行
python manage.py collectstatic命令,它将会自动把上面配置的静态路径下的所有文件复制到STATIC_ROOT 路径中。这样就可以统一在http服务器中配置静态文件。

(4)注意:

(a)如果我们在多个app下使用这样的路径static/imgs/xxx.png,那 么我们在collectstatic后,相同 名字的会覆盖,导致问题。所以我们一般在app下的static下加上app的namespace,形成static/myapp_name /imgs/xxx.png这 样的结构,即使多个app的静态文件复制到同一个文件夹下,也 没有问题。

(b)配置完static后,配置contrib.staticfiles
在settings.py文件中找到INSTALLED_APPS,确保其中包含有’django.contrib.staticfiles',一般该配置以默认加入了,如果你开发的时候使用的是runserver方式启动服务器,那么你就完成了所有配置,如果你使用其他服务器来开发,则还需要在项目的urls.py中加上如下配置:

from django.contrib.staticfiles.urls import staticfiles_urlpatterns    
# ... the rest of your URLconf goes here ...    
urlpatterns += staticfiles_urlpatterns() 
 需要注意的是,上面代码的第一行必须放在整个urls文件的第一行,上面代码的最后一行必须放在urls文件的最后一行。


那么在开发中,我们关注的:
1、如果仅需要在app中添加静态文件,STATIC_URL就可以满足我们。
2、如果需要在项目目录下,或者别的系统目录下添加静态文件,那么 STATICFILES_DIRS就可以满足我们
3、如果我们要把项目上线,那么我们需要配置STATIC_ROOT并且collectstatic, 这样可以在http服务器中统一配置静态文 件路径,方便做7层负载均衡,或者cdn 等加速静态文件加载的高级功能。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Django中配置静态文件路径

选择了最近一直在看的Django作为我的Android Demo的server端,今天想要实现一个Android下上传文件到服务器的功能,于是想了想,暂时可以先放到静态文件目录下,然后就把自己配置静态...

spring-boot 加载本地静态资源文件路径配置

1.spring boot默认加载文件的路径是  /META-INF/resources/  /resources/  /static/  /public/  这些目录下面, 当然我们也可以...

django 配置对于静态文件访问的路径

1、准备工作 准备css文件,准备js文件,准备image文件。 在网站根目录新建目录【medias】,在【medias】目录新建目录【styles】,用来存放css文件。   ...

iOS开发——静态库的导入和头文件路径的设置

大家在开发过程中,免不了要用到一些第三方或者是别人写好的一些Demo,这时就经常会用到别人写的一些静态库(.a文件)和n多个头文件(.h文件),这些文件不是简单地把它们拉到自己的工程里面就行的,还要设...

spring mvc 页面访问图片或者js等静态文件路径出错问题

这是web工程的结构,图片放在images文件夹下,js文件放在resource文件夹下 然后就...

ubuntu下apache配置文件路径

If you get this error: apache2: Could not determine the server's fully qualified domain name, using ...

一些服务的配置文件路径及常用linux命令

Tomcat6:安装: sudo yum install tomcat6 tomcat6-webapps tomcat6-admin-webapps (腾讯云服务器一定要用管理员权限安装,否则无法...

cmake配置c++可调用的文件路径参数

一、目的 在程序中使用一个路径配置,因为在svn服务器的测试数据,测试数据成为了本地路径,在程序中使用了绝对路径来处理文件的输入,这个令人头疼啊。 每次下完代码,我得挨个地方去找,谁在用本地路径,...

spring配置文件路径——如何使用表达式

http://name327.iteye.com/blog/1628884 Java代码   org.springframework.core.io.supportClassP...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)