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/路径里找,注意这点,静态文件处理上你会顺很多。

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

  1. Django中static文件的引入

    1. 在django project中创建 static文件夹 2.settings.py中配置要在 STATIC_URL = '/static/'  下边 STATICFILES_DIRS = [ ...

  2. 【python小随笔】Django+错误日志(配置Django报错文件指定位置)

    1:  自定义日志文件.py----------几个文件需要创建日志,就需要重新定义几份 # 定义一个日志文件 创建一个操作日志对象logger file_1 = logging.FileHandle ...

  3. django 设置静态文件,static 链接

    这篇文章讲的django 静态static 文件设置,还可以,供参考 http://blog.csdn.net/sinat_21302587/article/details/74059078

  4. [Django框架 - 静态文件配置、request对象方法初识、 pycharm链接数据库、ORM实操增删改查、django请求生命周期]

    [Django框架 - 静态文件配置.request对象方法初识. pycharm链接数据库.ORM实操增删改查.django请求生命周期] 我们将html文件默认都放在templates文件夹下 将 ...

  5. django static文件的引入方式

    1. 在django project中创建 static文件夹 2.settings.py中配置要在 STATIC_URL = '/static/'  下边 STATICFILES_DIRS = [ ...

  6. django模版中配置和使用静态文件方法

    1 在项目根路径下创建静态文件目录static: test3 是我的项目名,根目录下面: booktest 是一个应用 static是我建立的静态文件目录(这个名字其实可以叫其他的),静态文件都放在这 ...

  7. python 全栈开发,Day108(客户管理之权限控制,客户管理之动态"一级"菜单,其他应用使用rbac组件,django static文件的引入方式)

    一.客户管理之权限控制 昨天的作业,有很多不完善的地方 下载代码,基本实现权限验证 https://github.com/987334176/luffy_permission/archive/v1.2 ...

  8. Python django 404页面配置和debug=false 静态文件配置 django版本1.10.5

    django设置404页面 1.设置settings文件 DEBUG = False ALLOWED_HOSTS = ['127.0.0.1', 'localhost']或者 ALLOWED_HOST ...

  9. django配置templates、static、media和连接mysql数据库

    1.模板文件 # =======templates配置======= if os.path.exists(os.path.join(BASE_DIR, 'templates')) is False: ...

随机推荐

  1. 16 Go Concurrency Patterns: Timing out, moving on GO并发模式: 超时, 继续前进

    Go Concurrency Patterns: Timing out, moving on  GO并发模式: 超时, 继续前进 23 September 2010 Concurrent progra ...

  2. local class incompatible: stream classdesc serialVersionUID = -2897844985684768944, local class serialVersionUID = 7350468743759137184

    local class incompatible: stream classdesc serialVersionUID = 1, local class serialVersionUID = 2427 ...

  3. java基础25 线程的常用方法、线程安全问题、死锁现象

    一.线程的常用方法 1.Thread(String name):初始化线程的名字2. setName(String name):设置线程的名字3. getName():返回线程的名字4. sleep( ...

  4. POJ 1141 Brackets Sequence(括号匹配二)

    题目链接:http://poj.org/problem?id=1141 题目大意:给你一串字符串,让你补全括号,要求补得括号最少,并输出补全后的结果. 解题思路: 开始想的是利用相邻子区间,即dp[i ...

  5. 由结构体成员地址计算结构体地址——list_entry()原理详解

    #define list_entry(ptr, type, member) container_of(ptr, type, member) 在进行编程的时候,我们经常在知道结构体地址的情况下,寻找其中 ...

  6. AARRR:数据运营模型

    一.基础知识 产品经理  <增长黑客>数据分析基础 -- 获取(Acquisition)-- 激活(Activation)-- 留存(Retention)-- 收入(Revenue)-- ...

  7. Chrome+XX_Net的上网渠道

    本页面将详细演示如何在一台全新的Windows7电脑上架设起Chrome+XX_Net的上网渠道. 本文包含以下部分: 下载和安装Chrome浏览器 获取和运行XX-Net 设置代理 手动导入证书(备 ...

  8. MIT6.006Lec02:DocumentDistance

    MIT6.006是算法导论,Lec02讲的是Document Distance(文档距离),比如比较两个文档相似度或者搜索引擎中都会用到. 计算步骤为: 1.将每个文档分离为单词 2.统计词频 3.计 ...

  9. 更改MyEclipse中的src目录的浏览方式

    看到这个标题,有人可能不会明白,这里先看张图: 右边的图就是我们要更改的样子,有的时候我们做项目需要看下目录的层次,于是使用了Navigator的那个视图,其实常用的这种包视图也可以变成那种样式. 这 ...

  10. hdu 5120(求两个圆环相交的面积 2014北京现场赛 I题)

    两个圆环的内外径相同 给出内外径 和 两个圆心 求两个圆环相交的面积 画下图可以知道 就是两个大圆交-2*小圆与大圆交+2小圆交 Sample Input22 30 00 02 30 05 0 Sam ...