原文地址:http://my.oschina.net/u/877170/blog/293613
最近在学习django框架的使用,想引用静态css文件,怎么都引用不到,从网搜了好多,大多因为版本问题,
和我现在的使用的dango1.1配置不同,根据资料和公司的项目最终解决,于是想整理总结下各版dango静态文件的配置,以备后查;
配置原因:由于django不处理静态文件(css、js、image等),而是交与web服务器处理。
而django的路径处理和其他web框架有些区别,它需要我们手动的配置静态文件的路径,而不能直接引用。
静态文件的配置的分两种:
第一种为django的开发服务器的配置
第二种是生产服务器的nginx或apache的web服务配置
第一种,django的开发服务器的静态文件配置,根据django版本的不同,有着比较大的区别。
dango 1.1静态文件配置:
1、在项目目录中同settings目录建立static文件夹,其中存放 js 、css 、images文件,可再单独创建文件存放。
我的文件路径:
2、在settings中增加静态文件目录配置:
?
1
STATIC_PATH = os.path.join( os.path.dirname(__file__) , 'static' )
3、在url.py 中增加静态文件的路径 :
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# u静态文件
urlpatterns += patterns('',
#(r'^static/(?P<path>.*)$', 'django.views.static.serve',{'document_root': settings.STATIC_PATH}),
(r'^images/(?P<path>.*)$' , 'django.views.static.serve',
{'document_root': os.path.join( settings.STATIC_PATH , 'images' ) } ) ,
(r'^css/(?P<path>.*)$' , 'django.views.static.serve',
{'document_root': os.path.join( settings.STATIC_PATH , 'css' ) } ) ,
(r'^js/(?P<path>.*)$' , 'django.views.static.serve',
{'document_root': os.path.join( settings.STATIC_PATH , 'js' ) } ) ,
)
4、在模板中引用:
?
1
2
<link href="/css/bootstrap.min.css" rel="stylesheet">
<script src="/js/ie-emulation-modes-warning.js"></script>
主要是路径的问题,其他路径应该也可应,比如url.py中的直接使用start/来作为url,以下均匹配,以验证:
?
1
2
3
4
5
6
7
# 匹配static 文件夹及子文件夹中的文件
(r'^static/(?P<path>.*)$', 'django.views.static.serve',{'document_root': settings.STATIC_PATH}),
# 匹配image中的文件
#(r'^images/(.*)$' , 'django.views.static.serve', {'document_root': os.path.join( settings.STATIC_PATH , 'images' ) } ) ,
# 配置css文件价中的文件及子文件夹中的文件
#(r'^css/(?P<path>.*)$' , 'django.views.static.serve', {'document_root': os.path.join( settings.STATIC_PATH , 'css' ) } ) ,
#(r'^js/(?P<path>.*)$' , 'django.views.static.serve', {'document_root': os.path.join( settings.STATIC_PATH , 'js' ) } ) ,
django 1.3 静态文件配置:
django1.3提供了django.contrib.staticfiles这个模块,方便使用静态文件,显示图片,使用css等。
默认情况下(如果没有修改STATICFILES_FINDERS的话),Django首先会在STATICFILES_DIRS配置的文件夹中寻找静态文件,然后再从每个app的static子目录下查找,并且返回找到的第一个文件。
settings中新增的配置,MEDIA_ROOT、 MEDIA_URL 、STATIC_ROOT 、STATIC_URL
MEDIA:指用户上传的文件,比如在Model里面的FileFIeld,ImageField上传的文件。如果你定义
MEDIA_ROOT=c:\temp\media,那么File=models.FileField(upload_to="abc/"),上传的文件就会被保存到c:\temp\media\abc。MEDIA_ROOT必须是本地路径的绝对路径。
MEDIA_URL是指从浏览器访问时的地址前缀。
STATIC_ROOT用于存放网站自己的js,css,图片
注意:不要把你项目的静态文件放到这个目录。这个目录只有在运行manage.py collectstatic时才会用到。 Don't put anything in this directory(STATIC_ROOT) yourself; store your static files in apps' "static/" subdirectories and in STATICFILES_DIRS.
STATIC_URL的含义与MEDIA_URL类似
参考步骤如下:
1、settings配置:
?
1
2
3
4
5
6
7
8
9
10
HERE=os.path.dirname(os.path.dirname(__file__)
MEDIA_ROOT=os.path.join( HERE , 'media').replace('\\','/')
MEDIA_URL = '/media/'
STATIC_ROOT =os.path.join( HERE , 'static').replace('\\','/')
STATIC_URL= '/static/'
ADMIN_MEDIA_ROOT = '/static/admin/'
STATICFILES_DIRS = (
os.path.join(HERE,'app1/static/').replace('\\','/'),
os.path.join(HERE,'app2/static/').replace('\\','/')
)
2、url的配置:
?
1
2
3
4
from django.conf import settings
from djagno.conf.urls.static import static
urlpatterns += static(settings.MEDIA_URL , document_root = settings.MEDIA_ROOT )
urlpatterns += static(settings.STATIC_URL, document_root = settings.STATIC_ROOT )
3、模板的引用:
?
1
2
3
{% load static %}
<img src="{{ get_static_prefix }}images/1.jpg" />
<link href="{get_static_prefix}}css/truple.css />
具体配置,视情况而定,并不一定如此配置,仅供参考,待验证--todo;
django 1.3 往后的静态配置目录结构及方法变动比较小。
django1.4 静态配置:
url.py 增加:
?
1
2
3
## django 自动处理静态文件, 在模板框中可直接通过 static/ 引用
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
urlpatterns += staticfiles_urlpatterns()
setting.py 配置:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
BASEPATH = os.path.join( os.path.dirname( os.path.abspath(__file__) ) ,'..')
MEDIA_ROOT = ''
MEDIA_URL = ''
STATIC_ROOT = os.path.join( BASEPATH, 'static')
STATIC_URL = '/static/'
STATICFILES_DIRS = (
# Put strings here, like "/home/html/static" or "C:/www/django/static".
# Always use forward slashes, even on Windows.
# Don't forget to use absolute paths, not relative paths.
)
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
#'django.contrib.staticfiles.finders.DefaultStorageFinder',
)
TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
# 'django.template.loaders.eggs.Loader',
)
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
# Uncomment the next line for simple clickjacking protection:
# 'django.middleware.clickjacking.XFrameOptionsMiddleware',
)
import os
TEMPLATE_DIRS = (os.path.join(os.path.dirname(__file__), '..', 'templates').replace('\\','/'),)
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
# Uncomment the next line to enable the admin:
# 'django.contrib.admin',
# Uncomment the next line to enable admin documentation:
# 'django.contrib.admindocs',
'myapp',
)
# A sample logging configuration. The only tangible logging
# performed by this configuration is to send an email to
# the site admins on every HTTP 500 error when DEBUG=False.
# See http://docs.djangoproject.com/en/dev/topics/logging for
# more details on how to customize your logging configuration.
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'filters': {
'require_debug_false': {
'()': 'django.utils.log.RequireDebugFalse'
}
},
'handlers': {
'mail_admins': {
'level': 'ERROR',
'filters': ['require_debug_false'],
'class': 'django.utils.log.AdminEmailHandler'
}
},
'loggers': {
'django.request': {
'handlers': ['mail_admins'],
'level': 'ERROR',
'propagate': True,
},
}
}
模板文件:
?
1
2
<link rel="stylesheet" href="static/css/my.css">
<script src="static/js/jquery.js"></script>
待总结--todo
第二种 生成服务器的配置:
nignx的静态文件的配置:
todo
Apache的静态文件的配置:
todo
参考文档:
http://blog.sina.com.cn/s/blog_3fe961ae01016fpk.html
http://ddtcms.com/news/2011/11/21/18/django-1-3-zhong-xian-shi-tu-pian-shi-yong-jing-tai-wen-jian-de-wen-ti-django-static-files/
http://blog.csdn.net/wenxuansoft/article/details/8580508
分享到:
相关推荐
Django添加静态文件有两种方法: 首先setting.py配置文件中添加静态文件的路径: STATICFILES_DIRS = [ os.path.join(BASE_DIR, “statics”),] statices为你所建立的存放静态文件的文件夹名 然后进行引用。 1、...
Django:Django静态文件与媒体文件处理.docx
static下存放静态文件,templates下存放网页模板文件 2.修改setting.py 找到 STATIC_ROOT = … 在后面追加一行,然后保存 3.html引入js 4.前端验证 5.后台验证 您可能感兴趣的文章:django 解决自定义序列化...
### Django静态文件配置详解 #### 一、概述 在Django框架中,处理静态文件是一项基本但重要的功能。静态文件通常包括CSS样式表、JavaScript脚本、图像等资源,它们对于构建网页应用至关重要。在Django中,这些静态...
总结来说,Django中的静态文件配置涉及到多个设置项,包括`STATIC_ROOT`、`STATIC_URL`以及`ADMIN_MEDIA_PREFIX`,它们共同确保了静态文件在开发和生产环境中的正确管理和访问。理解这些配置项的工作原理,以及它们...
本文将详细介绍如何在Django中配置静态文件,以确保这些资源能够正确地被浏览器加载。 首先,我们来看一下Django项目的标准文件结构。每个应用程序(app)都应该有自己的`static`文件夹,用于存放应用相关的静态资源...
django静态文件配置原理 静态文件配置就是为了让用户请求时django服务器能找到静态文件返回。 首先要理解几个概念: 媒体文件:用户上传的文件 静态文件:css,js,image等 开发环境:使用django内置服务器处理...
Apache运行python的django程序配置文件
总结来说,Django处理静态文件的流程包括配置静态文件的URL前缀,定义静态文件的来源目录,正确组织静态文件的目录结构,以及在模板中使用`static`标签引用这些文件。在开发过程中,可以使用Django的内置服务器来...
- 在Nginx配置文件中,添加一个location块,配置SVG和其他静态文件的路径,确保它们能够被正确地服务。 4. 静态文件收集: - 运行`python3 manage.py collectstatic`命令,将Django和SimpleUI的静态文件复制到...
总结来说,解决Django访问静态文件出错的问题,主要涉及检查`DEBUG`设置、设置`STATIC_URL`和`STATICFILES_DIRS`、配置静态文件查找器以及在Web服务器配置中正确映射静态文件。正确地执行这些步骤将确保你的用户能够...
在本文中,我们将深入探讨如何在树莓派上部署Django项目,并配置uwsgi和nginx。树莓派作为一款小巧而强大的嵌入式设备,常被用于各种开发和实验环境,包括运行Web应用。 首先,我们需要理解Django,它是一个高级...
配置静态文件的两种方式: 1 配置单独app下的静态文件,比如某个app下的单独的图片。 2 配置整个project下的静态文件,适用于那些和单独app关联不大的文件,比如jquery bootstrap 等等 配置步骤: 首先,我们需要...
2. **在settings.py中配置静态文件** 在`settings.py`文件中,你需要设置两个关键的变量来处理静态文件: - `STATIC_URL`: 这是静态文件的URL前缀,通常设置为`'/static/'`。 - `STATIC_ROOT`: 这是在生产环境中...
原因:django部署方式比较特别,采用静态文件路径:STATICFILES_DIRS的部署方式,之前你写的相对路径,绝对路径因为缺少静态文件路径而全部失效 做页面显示时,肯定少不了加载css,js等文件吧,但是在Django中,我们...
解决Django生产环境静态文件加载问题的关键在于手动配置静态文件的服务。接下来我们将逐一介绍具体的实现步骤。 ##### 1. 通过`runserver`命令启动服务器时的临时解决方案 - **命令格式**:可以通过在`runserver`...