简易配置Django的Static文件

http://blog.csdn.net/hireboy/article/details/8806098

Django 1.3以后,采用static方式处理静态文件,比如网站的css js images等等,而以前所谓的media改成处理网站自身以外的媒体文件了。media和static用途上容易混淆,请移步上次讲的《对Django media和static概念的理解》。

如果简单使用static,配置起来会比media要少一步,下面会比较一下。说到static,不能不说说Django开发环境和部署环境的区别,Django配置文件settings.py里的DEBUG变量就是主要的区别, DEBUG=True,说明是在开发环境(调试模式)下,DEBUG=False反之是在正式部署环境下使用。两者有很大的区别,比如缓存,出错信息的方式等等,还有今天说的静态文件的处理方式上。开发环境下静态文件都是通过Django自带的web服务器来处理的(这样会更方面)。如果把DEBUG设置成False,那么Django自带的web服务器自然不处理静态文件了,静态文件都交给nginx,apache来处理吧(这样会更高效)。
具体说说static在开发环境下怎么配置吧。
这次主要拿Django 1.4版本来做配置,这个要事先声明,因为1.4以后,Django的项目结构发生很大的变化,如果下面的配置做法放到Django 1.3上肯定不适应了,值得注意哦。staitc的配置只要在settings.py里做即可。
DEBUG=True 这个设定环境是处在开发环境下。
然后自己建立一个变量SITE_ROOT,变量不是必须的,只是为了方面重用,名字可以随意起。 import os SITE_ROOT=os.path.join(os.path.abspath(os.path.dirname(__file__)),‘..‘) 变量值项目的根目录,也就是settings.py的存放位置。
然后给静态文件变量赋值,告诉Django,静态文件在哪里 STATIC_ROOT = os.path.join(SITE_ROOT,‘static‘)
说到这里,我还是说说项目文件结构吧,这个容易蒙人,比如这次的讲的项目结构如下: myproject ----myproject --------__init__.py --------settings.py --------urls.py --------wsgi.py ----blog --------__init__.py --------models.py --------views.py --------test.py ----static --------css ------------style.css --------js ------------jquery.js --------images ------------me.jpg ----media --------upload
注意项目的结构,你会发现SITE_ROOT就是 myproject ----myproject 的路径。
STATIC_ROOT就是 myproject ----media 的路径。
好,接着配置说 STATIC_URL = ‘/static/‘ 给静态文件url一个后缀,在templates里用到的。
最后关键的部分是STATICFILES_DIRS以下配置 STATICFILES_DIRS = (     ("css", os.path.join(STATIC_ROOT,‘css‘)),     ("js", os.path.join(STATIC_ROOT,‘js‘)),     ("images", os.path.join(STATIC_ROOT,‘images‘)), ) 简要说一下,static文件夹在项目里,有css js images 三个文件夹(看项目结构),他们的路径分别是: os.path.join(STATIC_ROOT,‘css‘),os.path.join(STATIC_ROOT,‘js‘),os.path.join(STATIC_ROOT,‘images‘); 我们分别给他们起三个别名css,js,images(你可以随意给,不过为了易记,我们原名称指定别名了)
到这里staitc算是配置完成了,并不需要再urls.py里配置相关的东西,Django就会自动找到对的路径解析静态文件了,也是在配置上static比media少了一步。

配置好了,在templates 就能正常使用静态文件了。怎么用?拿一个templates讲解吧。

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset=utf-8>
<title>staitc例子</title>
<link rel="stylesheet" type="text/css" href="{{STATIC_URL}}css/style.css" media="screen" />
<script type="text/javascript" src="{{STATIC_URL}}js/jquery.js"></script>
</head>
<body>
    <img src="{{STATIC_URL}}images/me.jpg"" alt="img">
</body>
</html>

注意{{STATIC_URL}}就是取配置文件settings.py里的STATIC_URL变量,解析出来的就是:/static/。
而{{STATIC_URL}}css/style.css最终解析出来的就是我们想要的:/static/css/style.css,Django会根据配置文件找到相应的文件。

快到尾声的时候,讲讲正式部署环境怎么设置吧:
DEBUG=False
首先把DEBUG设置为False,告诉Django环境是正式的非调试模式下了,然后Django就不再通过自己来处理静态页面了,最后静态文件都交给Nginx Apache来处理了。

说说Nginx怎么配置,才能正确解析静态文件吧,在一个server里添加一个location静态文件处理

location  /static/ {
        root  /home/www-data/twogoo/myproject/;

}

这个也有一个容易犯错的地方,就是路径,有的同学常常指定这样的路径:/home/www-data/twogoo/myproject/staitc/;这样Nginx应该找不到静态文件的,因为Nginx会跑到/home/www-data/twogoo/myproject/staitc/staitc/路径里找,注意这点,静态文件处理上你会顺很多。

时间: 2024-10-14 12:49:48

简易配置Django的Static文件的相关文章

django中静态文件路径配置

#环境:ubuntu12.04+python27+django1.4.2+[ngix]+fastcgi; #如果经过ngix服务器的话无疑可以在任意位置放置,只要在ngix中配置相关的路径文件,但很多时候在调试时我们不想经过ngix服务器,那就需要对django进行静态文件的路径配置. #首先我想把我的静态文件放在项目的根目录下,创建一个static的文件夹,为了便于显示效果,我在static下放置了一个sa.txt文件,里面随意写一些内容! #文件目录如图所示: #打开settings.py文

Django js css 文件配置

settings.py  加一行 SCRIPTS_URL = os.path.join(BASE_DIR,'scripts/') (在项目根目录下有个scripts文件夹 即 和manage.py 同级) 然后在urls.py 加个底下那一段,不知道为什么我在Mac下 合并在一起就不行了 难道是人品? urlpatterns = patterns('', # Examples: # url(r'^$', 'Notes.views.home', name='home'), # url(r'^blo

django settings配置templates和static

我们用django创建项目后,一般需要在$PROJECT/$PROJECT/settings.py文件中做些配置,例如配置templates和static目录的路径 templates的配置: TEMPLATES = [     {         'BACKEND': 'django.template.backends.django.DjangoTemplates',         'DIRS': [os.path.join(BASE_DIR,'templates')],         '

django 设置静态文件,static

一.搜集静态文件 1.1 命令行查看 collectstatic guoguos-MacBook-Pro:mysite guoguo$ python manage.py -h [staticfiles] collectstatic findstatic runserver 1.2 执行 python manage.py collectstatic 收集信息 guoguos-MacBook-Pro:mysite guoguo$ python manage.py collectstatic You

Django ==&gt; static文件的引入方式

1. 在django project中创建 static文件夹 2.settings.py中配置要在 STATIC_URL = '/static/'  下边 STATICFILES_DIRS = [ os.path.join(BASE_DIR, 'static'), ] 或 STATIC_ROOT = os.path.join(BASE_DIR, 'static') 3.前端引入 方法一.(推荐使用) 在页面的较上处写: {% load staticfiles %} 在 link script

Django关掉Debug后站点无法加载static文件

方法一:在服务器上配置站点static文件夹的路径 在服务器apache2或nginx的站点配置文件中修改或添加static文件夹的路径,重启服务器后站点则能够正常访问静态资源了 方法二:改变django项目的运行方式 python manage.py runserver --insecure 如上所示,添加--insecure参数 原文地址:https://blog.51cto.com/14284354/2401100

Django框架静态文件配置和URL解析

静态文件配置 1:#在django项目下创建一个static静态文件文件夹,在static文件夹下创建对应的css,img,js文件夹,用来存放css样式文件,图片和js代码,用于HTML引入 2:#在django项目的settings配置文件中,配置静态文件相关配置(setting文件的最下面) STATIC_URL = '/static/' #静态文件的文件路径别名,别名可以改,一般不改 STATICFILES_DIRS = [ #静态文件的文件路径,就是创建的static的静态文件夹路径,

Django配置用户上传文件夹和暴露后端文件夹资源

网站所用的静态文件我们都默认存放到static文件夹下,而用户上传的文件也是静态资源,我们需要找一个公共的地方专门存储用户上传的静态文件. 针对用户上传的不同文件,保存到指定的文件夹下. media配置专门用来指定用户上传的静态文件存放路径 1.配置文件中书写以下代码 # settings.py MEDIA_ROOT = os.path.join(BASE_DIR, 'media') # 用户上传的文件就会保存到该文件夹下 # media是文件夹的名字,可以自定义,一般使用media作为名字 当

python django 访问static静态文件

settings 文件配置: STATIC_URL = '/static/' STATICFILES_DIRS = ( os.path.join(BASE_DIR, 'static'),)PROJECT_ROOT = os.path.dirname(__file__) STATICFILES_DIRS = (os.path.join(PROJECT_ROOT, 'static'),)