Django配置static files

第一部分:在开发环境下

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

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值