生产与开发环境下的Django静态文件配置

    受Django版本更新的影响,其静态文件配置很乱,网上有各类说法,其实大多有道理的,只是没说明是针对哪一个版本的Django。但1.4版本(可能包括其以后的版本)静态文件配置至关简单,在此记录下。 html

    开发环境  

     以Django 1.4.5版本举例,在Pycharm 2.7.3上开发(为Pycharm打下广告,这货还真不赖,对Django的支持至关好,就连移动模板位置她都会自动跟踪),步骤以下:
  • 新建Django project untitled,
  • 再用manage.py startapp hello建一个hello app,
  • 最后在hello app下建一个static目录用来存放静态文件,
  • 运行manage.py runserver,访问http://127.0.0.1:8000/static/a.txt,就成功访问静态文件了,
  • 目录结构以下:
│  manage.py
│
├─hello
│  │  models.py
│  │  tests.py
│  │  views.py
│  │  __init__.py
│  │
│  └─static
│          a.txt
│
├─templates
└─untitled
        settings.py
        urls.py
        wsgi.py
        __init__.py

    以上的静态文件访问无需对Django作任何配置,因Django自动开启了settings.py文件下INSTALLED_APPS的'django.contrib.staticfiles'。这里并未在urls.py里设置如下的代码,虽网上不少说这是必需的,但至少在1.4版本下是非必需的 python

from django.contrib.staticfiles.urls import staticfiles_urlpatterns
    urlpatterns += staticfiles_urlpatterns()

    如今可以确认的是Django处理静态文件的是下面这个库文件:
shell

\Lib\site-packages\django\contrib\staticfiles\finders.py

    生产环境

    生产环境下通常是把静态文件放在项目根目录下的static目录下。以百度应用引擎(BAE)为例: django

  • 在项目根目录下建立如上面的的示例代码中的目录static,并在settings.py中相应设置目录
  • 运行Django脚本manage.py collectstatic,收集全部静态文件至其之下,方便服务器处理
  • 在BAE的app.conf中配置静态文件映射,
    其实自己静态文件是交给Nginx之类的服务器处理映射的,但在开发环境下Django为方便开发,能够用内置的服务器代为处理,因此才有了以上的两种配置。

    PS:测试过程当中发现BAE竟对静态文件的后缀名大小写敏感,本地开发环境下却没有此现象。 服务器

参考:
http://blog.yangyubo.com/2012/07/26/django-staticfiles/
http://www.cnblogs.com/bourneli/archive/2013/01/21/2869327.html app

相关文章
相关标签/搜索