Django配置static files

来源:互联网 发布:矩阵的行和范数 编辑:程序博客网 时间:2024/06/05 08:33

第一部分:在开发环境下

1.说明

本篇旨在阐明如何在开发环境下为django项目配置static files,所谓开发环境是指以manage.py run server指定的服务器发布,且settings.DEBUG = True,此时将由django程序处理静态文件。

2.django处理静态文件流程

django提供了django.contrib.staticfiles app模块来帮助我们发布静态文件,其响应的流程如下:

1,接收到例如http://www.dataliu.com/static/image/picture.jpg的url,如果STATIC_URL = /static/, 则其交由django.contrib.staticfiles App处理。2.django.contrib.staticfiles先去STATICFILES_DIRS中指定的目录下寻找image/picture.jpg,如果找不到就去各app目录下的static/下寻找,将先找到的文件发布出去。

3.django静态文件配置

熟悉了django处理静态文件的流程,可以知道要配置静态文件,需要配置STATIC_URL和STATICFILES_DIRS两个属性。以及将文件放到相应目录。配置流程如下:

  1. 把django.contrib.staticfiles添加到settings.py中的INSTALLED_APPS中.

    INSTALLED_APPS = (    'django.contrib.admin',    'django.contrib.auth',    'django.contrib.contenttypes',    'django.contrib.sessions',    'django.contrib.messages',    'django.contrib.staticfiles', #添加该文件!!!    )
  2. 在settins.py中定义STATIC_URL, 例如:

    STATIC_URL = '/static/'

    注意:在django1.4以前,需要自己为django.contrib.staticfiles配url,而django1.5以后不需要。

    #在django1.4中urls.py 底部加上:
    from django.contrib.staticfiles.urls import staticfiles_urlpatterns
    urlpatterns += staticfiles_urlpatterns()

  3. 将静态文件存储到各app目录下的static目录下(目录名必须为static),例如

    app/static/image/picture.jpg
  4. 如果需要使用一些各app公用的静态文件,则在项目目录下创建一个目录,然后把该目录的路径添加到STATICFILES_DIRS中,例如。

    # 在settings.py中添加STATICFILES_DIRS = (    os.path.join(BASE_DIR, "common_static"),    # 还可以添加更多路径)
  5. 最终结果,一般配置完静态文件后,在settings.py中会有如下一段:(STATIC_ROOT的作用在生产环境时介绍。)

    ...INSTALLED_APPS = (         ...    'django.contrib.staticfiles', #添加该文件!!!    )...# Static files (CSS, JavaScript, Images)# https://docs.djangoproject.com/en/1.8/howto/static-files/STATIC_URL = '/static/'STATIC_ROOT = os.path.join(BASE_DIR, 'collected_static')STATICFILES_DIRS = (    os.path.join(BASE_DIR, "common_static"),)...

第二部分:在生产环境下

1. 说明:

在生产环境下,一般把静态文件交由Nginx等服务器发布,不由django程序处理。此时需要做的就是把所有静态文件拿出来并整理,然后给其他服务器发布。

2. 配置静态文件

  1. 第一步:收集静态文件

    然而django不需要自己手动去收集并整理静态文件,使用如下指令,会把以前放在app下static中的静态文件全部拷贝到 settings.py 中设置的 STATIC_ROOT 文件夹中,包括admin App中用到的静态文件

    python manage.py collectstatic
  2. 第二步:交给其他服务器发布

    发布的方法很多,不同服务器不一样,可以自行google,这里不过多赘述。

相关文章

官方文档:https://docs.djangoproject.com/en/1.8/howto/static-files/
自强学堂:http://www.ziqiangxuetang.com/django/django-static-files.html

0 0
原创粉丝点击