Django静态文件处理【开发环境】
2015-05-11 16:12
169 查看
问题描述:
Django中需要嵌入一张图片,但是直接使用相对路径查找,无法显示图片。
【初始路径设置,图片放在images文件夹下】
解决办法:
官方文档:Managing static files (CSS, images)
django中处理css,js, images文件分为两种情况:开发环境和生产环境。本文介绍开发环境下的实现步骤。
查阅了很多资料和博客,一种方法是在urls.py中设置一种url映射,把对CSS/JS/IMAGES的URL转到对应的地方。
提供一种更加简洁的方法,django为我们提供了一个函数接口urls.staticfiles_urlpatterns(),方便我们对静态文件进行操作。下面介绍具体的实现方法:
1. 在templates同级目录下创建static文件夹,将images/js/css文件都放在static文件夹下。
settings.py
首先确定INSTALLED_APPS中安装了‘django.contrib.staticfiles’app.
设置STATIC_URL 和STATICFILES_DIRS
urls.py
加载staticfiles_urlpatterns模块。
设置好STATICFILES_DIRS路径,使用staticfiles_urlpatterns函数就可以在路径下查找匹配的静态文件。
4. templates
经过设置,我们在模版下就可以如此访问css/js/images文件了。
这种方法设置,我们就不需要分开设置js, css, images三个不同的路径,只要设置静态文件夹所在的位置,在模版文件中,直接指定文件的子目录就可以访问到。
同时,我们访问http://localhost:8000/static/js/myjs.js 也可以访问到静态文件夹中的js文件。
总结:
django中不想php中的根目录的概念,取而代之的是包的概念,通过urls.py来提供每个url对应的django对应的函数来显示页面。在包的templates目录中的html页面中,我们不能直接写图片或css,js文件的相对、绝对路径,而是需要像urls提供的url对应图片、js/css目录。
django提供了一种特殊机制来处理静态文件。默认情况下(没有修改STATICFILES_FINDERS的话),django首先会在STATICFILES_DIRS配置的文件中寻找静态文件,然后再从每个app中的static子目录下查找,并且返回找到的第一个文件。所以我们可以将全局的静态文件放在STATICFILES_DIRS配置的目录下,将app独有的静态文件放在每个app的static子目录中。然后按照类别存放,图片都放在images文件下,css文件放在css文件夹下,js文件放在js文件夹下。
STATIC_URL一般用默认的/static/,用于指定的静态目录的URL。
STATICFILES_DIRS则指定一个工程里面哪个目录存放了与这个工程相关的静态文件,它是一个列表。
在开发阶段,Django把/static映射到django.contrib.staticfiles这个App。staticfiles自动地从STATICFILES_DIRS、STATIC_ROOT以及各个App的static子目录里面搜索静态文件。
生产环境参考:
Django的MEDIA_ROOT和STATIC_ROOT
Django中需要嵌入一张图片,但是直接使用相对路径查找,无法显示图片。
【初始路径设置,图片放在images文件夹下】
[code]<img id="demo" src="/images/ori.gif">
解决办法:
官方文档:Managing static files (CSS, images)
django中处理css,js, images文件分为两种情况:开发环境和生产环境。本文介绍开发环境下的实现步骤。
查阅了很多资料和博客,一种方法是在urls.py中设置一种url映射,把对CSS/JS/IMAGES的URL转到对应的地方。
[code](r'^site_media/(?P<path>.*)$','django.views.static.serve',{'document_root':settings.STATIC_PATH}),
提供一种更加简洁的方法,django为我们提供了一个函数接口urls.staticfiles_urlpatterns(),方便我们对静态文件进行操作。下面介绍具体的实现方法:
1. 在templates同级目录下创建static文件夹,将images/js/css文件都放在static文件夹下。
settings.py
首先确定INSTALLED_APPS中安装了‘django.contrib.staticfiles’app.
设置STATIC_URL 和STATICFILES_DIRS
[code]STATIC_URL = '/static/' STATICFILES_DIRS = ( os.path.join(BASE_DIR,'static'), )
urls.py
加载staticfiles_urlpatterns模块。
[code]from django.contrib.staticfiles.urls import staticfiles_urlpatterns urlpatterns += staticfiles_urlpatterns()
设置好STATICFILES_DIRS路径,使用staticfiles_urlpatterns函数就可以在路径下查找匹配的静态文件。
4. templates
经过设置,我们在模版下就可以如此访问css/js/images文件了。
[code]<img id="demo" src="/static/images/ori.gif">
这种方法设置,我们就不需要分开设置js, css, images三个不同的路径,只要设置静态文件夹所在的位置,在模版文件中,直接指定文件的子目录就可以访问到。
同时,我们访问http://localhost:8000/static/js/myjs.js 也可以访问到静态文件夹中的js文件。
总结:
django中不想php中的根目录的概念,取而代之的是包的概念,通过urls.py来提供每个url对应的django对应的函数来显示页面。在包的templates目录中的html页面中,我们不能直接写图片或css,js文件的相对、绝对路径,而是需要像urls提供的url对应图片、js/css目录。
django提供了一种特殊机制来处理静态文件。默认情况下(没有修改STATICFILES_FINDERS的话),django首先会在STATICFILES_DIRS配置的文件中寻找静态文件,然后再从每个app中的static子目录下查找,并且返回找到的第一个文件。所以我们可以将全局的静态文件放在STATICFILES_DIRS配置的目录下,将app独有的静态文件放在每个app的static子目录中。然后按照类别存放,图片都放在images文件下,css文件放在css文件夹下,js文件放在js文件夹下。
STATIC_URL一般用默认的/static/,用于指定的静态目录的URL。
STATICFILES_DIRS则指定一个工程里面哪个目录存放了与这个工程相关的静态文件,它是一个列表。
在开发阶段,Django把/static映射到django.contrib.staticfiles这个App。staticfiles自动地从STATICFILES_DIRS、STATIC_ROOT以及各个App的static子目录里面搜索静态文件。
生产环境参考:
Django的MEDIA_ROOT和STATIC_ROOT
相关文章推荐
- Django对静态文件的处理——开发阶段
- Django开发环境静态文件访问配置
- django1.5开发环境static静态文件配置
- Django开发环境静态文件访问配置
- Django-项目上线后,xadmin的static静态文件找不到,改为开发环境
- 使用pycharm手动搭建python语言django开发环境(三) 使用django的apps应用 添加应用静态文件
- 利用 webpack 处理开发与线上环境静态资源切换问题
- 微信小程序,腾讯云node环境后台koa2开发框架(本地调试、接口、静态文件服务、文件长传服务)
- Django~3~静态文件处理
- Django基于Pycharm开发之四[关于静态文件的使用,配置以及源码分析](原创)
- Python + django + pycharm 项目的前端代码的静态文件处理
- nginx 处理 django 静态文件
- Golang 开发web应用时的静态文件处理方法(v0.01)
- django1.6在DEBUGE=False时的静态文件临时处理
- Django静态文件处理总结
- Django对静态文件的处理——部署阶段
- 使用Django来处理对于静态文件的请求
- 使用Django来处理对于静态文件的请求
- 使用Django来处理对于静态文件的请求
- Django开发服务器无法找到静态文件的解决方法