Django_静态资源配置

来源:互联网 发布:国外聊天软件 编辑:程序博客网 时间:2024/06/06 01:05

今天我们来配置一下Python下Django里的静态资源


开发环境即设DEBUG=True 

1. 确保INSTALLED_APPS安装了django.contrib.staticfiles模块 
2. 定义STATIC_URL:如 
STATIC_URL = '/static/'
3. 在模板中访问可以有三种方式:直接硬编码像/static/×××.jpg这样,或是使用static标签,如 
{% load staticfiles %} <img src="{% static "my_app/myexample.jpg" %}" alt="My image"/>,

我常使用{{STATIC_URL}}×××.jpg 来写静态路径的(必须使用RequestContext进行渲染,否则无法引用STATIC_URL的值)。 

4. 在/static/目录下存放静态文件。 
总结起来,基本配置就是这四点。 
但是,其中有个问题,/static/指定的是哪个目录。


静态资源将利用STATICFILES_FINDERS指定的搜索器搜索路径下面的STATIC_URL指定目录。STATICFILES_FINDERS默认依次包含:


*FileSystemFinder:在文件系统里搜索STATICFILES_DIRS指定目录。默认不包含任何目录
*AppDirectoriesFinder:搜索INSTALLED_APPS注册过的应用目录
因此,使用入门级配置的正常情况下就是在project注册app,然后在app目录下存放static目录。


下面情况无法访问静态资源

资源存放在project下的static目录,没有在settings.py中设置STATICFILES_DIRS为(os.path.join(BASE_DIR, “static”)
静态资源的高级配置


不使用django.contrib.staticfiles模块时,可以利用django.views.static.serve提供静态资源。用法简单,只要在urls.py使用下面的代码:


from django.conf.urls import url,includefrom django.contrib import adminfrom django.conf.urls.static import staticfrom django.conf import settingsurlpatterns = [    #。。。。。。]+ static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)   #重点


static(prefix, view=serve, ××kwargs)会返回一个Url,该url会由django.views.static.serve进行响应。serve方法纯粹使用文件系统来搜索资源文件。STATIC_URL作为访问url里资源的前缀,STATIC_ROOT必须是资源文件的绝对文件路径。举例如下:

STATIC_URL = '/static/'STATICFILES_DIRS =(    os.path.join(BASE_DIR,'static'))

访问时http://localhost:8000/statics/*.img。代码会查找statics资源前缀,截取后面的路径如*.img再与STATIC_ROOT路径拼接,进而访问资源文件。


应学会灵活使用static(prefix, view=serve, ××kwargs),上面使用了STATIC_URL和STATIC_ROOT,但要意识到只要参数正确,传什么都可以。这种静态资源的使用方式简单粗暴,即使不是开发环境也能适用哦。唯一缺点不适合商用。

原创粉丝点击