静态文件如CSS, javascript, 图片等文件在django中的配置官方文档写的比较模糊,自己通过实验验证后并整理如下,以防遗忘,目前只整理了关于本地开发中的设置方式,实际发布的配置方式稍后整理。
【第一部分:配置】
步骤一:配置STATICFILES_DIRS
两种情况:
1. 默认情况,静态文件放在app目录下的static目录中,这种情况不用进行特别配置。
2. 静态文件与特定app无关或是多个app共用同一份静态文件,这种情况下将静态文件文件放在任意目录中,那么在settings.py文件中找到STATICFILES_DIRS部分,在其中添加放置静态文件的目录路径,在该部分的注释中说到,需要使用绝对路径,不要使用相对路径,并且无论在任何系统中都使用“/”作为路径分隔符。
步骤二:配置contrib.staticfiles
在settings.py文件中找到INSTALLED_APPS,确保其中包含有’django.contrib.staticfiles',本人使用的是1.4.3版本,该配置以默认加入了,因此也不用特别配置,如果你开发的时候使用的是runserver方式启动服务器,那么你就完成了所有配置,如果你使用其他服务器来开发,则还需要在项目的urls.py中加上如下配置:
from django.contrib.staticfiles.urls import staticfiles_urlpatterns # ... the rest of your URLconf goes here ... urlpatterns += staticfiles_urlpatterns()
需要注意的是,上面代码的第一行必须放在整个urls文件的第一行,上面代码的最后一行必须放在urls文件的最后一行。
【第二部分:在template中使用静态文件】
两种使用方式:
方法1: 使用context processor:
采用这种方式需要有一些额外配置,打开settings.py,确认TEMPLATE_CONTEXT_PROCESSORS中包含有'django.core.context_processors.static',本人使用的是1.4.3版本,打开后没有找到TEMPLATE_CONTEXT_PROCESSORS一项配置,那么自己加上这一项配置也可以生效,代码如下:
TEMPLATE_CONTEXT_PROCESSORS = ( 'django.core.context_processors.debug', 'django.core.context_processors.i18n', 'django.core.context_processors.media', 'django.core.context_processors.static', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', )
配置完成后,在模板中引用静态文件如下:
<img src="{{ STATIC_URL }}images/hi.jpg" />
如果你是手写的views部分方法,那么目前访问还不能生效,还需要在views.py中使用RequestContext来处理request请求后才能生效,如果你使用的generic view(通用视图),那么可以忽略一下配置,因为其中已使用RequestContext自动处理了:
from django.template import RequestContext from django.shortcuts import render_to_response def index(request): return render_to_response('index.html', RequestContext(request))
附注: 本人亲自试验过这种配置方式,但最终请求url地址有点诡异,暂时未找到原因和解决方法,因此这种方法需继续测试,慎用!
方法2: 使用template标签的方式:
这种方式比较简便,在本人开发过程中也比较易用,不用额外配置,也不用在每个view中添加RequestContext,在template中可以直接使用,示例代码如下:
#直接使用 {% load staticfiles %} <img src="{% static "images/hi.jpg" %}" /> #变量方式使用 {% load staticfiles %} <link rel="stylesheet" href="{% static user_stylesheet %}" type="text/css" media="screen"/>
上面代码第一种方式是直接硬编码静态文件地址,第二种方式是使用变量方式使用静态文件,使用第二种方式时可以如下代码所示:
from django.shortcuts import render_to_response def index(request): return render_to_response('index.html', {'user_stylesheet': 'css/user.css'}) #将user_stylesheet加入context传入template进行渲染
实际开发的静态文件部署及访问方式待补充
参考:
1. 官方静态文件设置文档
相关推荐
Django添加静态文件有两种方法: 首先setting.py配置文件中添加静态文件的路径: STATICFILES_DIRS = [ os.path.join(BASE_DIR, “statics”),] statices为你所建立的存放静态文件的文件夹名 然后进行引用。 1、...
本篇将详细解释Django中静态文件的配置方法及其工作原理。 首先,我们需要理解静态文件与媒体文件的区别。静态文件包括CSS、JS和图像等,它们是网站设计的基础元素,不会根据用户的行为或数据进行动态改变。而媒体...
总结来说,解决Django访问静态文件出错的问题,主要涉及检查`DEBUG`设置、设置`STATIC_URL`和`STATICFILES_DIRS`、配置静态文件查找器以及在Web服务器配置中正确映射静态文件。正确地执行这些步骤将确保你的用户能够...
以下是关于Django模板中加载静态文件的配置方法的详细讲解: 1. **添加`django.contrib.staticfiles`到`INSTALLED_APPS`**: 在`settings.py`文件中,确保`django.contrib.staticfiles`被包含在`INSTALLED_APPS`...
django静态文件配置原理 静态文件配置就是为了让用户请求时django服务器能找到静态文件返回。 首先要理解几个概念: 媒体文件:用户上传的文件 静态文件:css,js,image等 开发环境:使用django内置服务器处理...
Django:Django静态文件与媒体文件处理.docx
最后,在Nginx的配置文件中,你需要设置一个`location`块来处理`STATIC_URL`匹配的请求,将这些请求直接转发到`STATIC_ROOT`目录,以避免Django服务处理这些静态文件,从而减轻服务器负担。具体的Nginx配置因环境而...
原因:django部署方式比较特别,采用静态文件路径:STATICFILES_DIRS的部署方式,之前你写的相对路径,绝对路径因为缺少静态文件路径而全部失效 做页面显示时,肯定少不了加载css,js等文件吧,但是在Django中,我们...
static下存放静态文件,templates下存放网页模板文件 2.修改setting.py 找到 STATIC_ROOT = … 在后面追加一行,然后保存 3.html引入js 4.前端验证 5.后台验证 您可能感兴趣的文章:django 解决自定义序列化...
#### 二、理解Django静态文件处理机制 为了更好地解决问题,首先需要了解Django是如何处理静态文件的。 - **开发环境**:在开发环境下,当`settings.DEBUG = True`时,Django会自动处理静态文件请求。也就是说,...
Apache运行python的django程序配置文件
django 中已经有很多对静态文件的压缩和预编译的支持,即 django-compresser,但它们只有在 django 模板中使用一些自定义标签时才有效。 由于缓存管理,每次呈现模板时都会导致一些时间开销,并且此问题仍然存在于...
最后,如果你没有在 `INSTALLED_APPS` 中包含 `django.contrib.staticfiles`,你需要在 `urls.py` 文件中手动处理静态文件的 URL 映射。以下是一个例子: ```python from django.conf import settings from django....
- 在Nginx配置文件中,添加一个location块,配置SVG和其他静态文件的路径,确保它们能够被正确地服务。 4. 静态文件收集: - 运行`python3 manage.py collectstatic`命令,将Django和SimpleUI的静态文件复制到...
通过合理配置Django的静态文件相关设置,并在模板中使用Django的静态文件模板标签,可以大大提升项目的可维护性和性能。在生产环境中,应使用专业的Web服务器来服务静态文件,并且要根据实际部署环境进行适当的配置...
首先,我们需要确认在settings.py文件中的INSTALLED_APPS变量中存在 django.contrib.staticfiles INSTALLED_APPS = ( 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django...
Static files管理 static files指一些用到的像css,javascript,images之类的文件。...当然也可以直接放在my_app/static中,但这样的话,如果在不同的app中有相同名字的静态文件,就会产生冲突。 4.模板中使