`
lanceverw
  • 浏览: 44144 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Django中静态文件设置方法

阅读更多

静态文件如CSS, javascript, 图片等文件在django中的配置官方文档写的比较模糊,自己通过实验验证后并整理如下,以防遗忘,目前只整理了关于本地开发中的设置方式,实际发布的配置方式稍后整理。

 

【第一部分:配置】

步骤一:配置STATICFILES_DIRS

两种情况:

    1. 默认情况,静态文件放在app目录下的static目录中,这种情况不用进行特别配置。

    2. 静态文件与特定app无关或是多个app共用同一份静态文件,这种情况下将静态文件文件放在任意目录中,那么在settings.py文件中找到STATICFILES_DIRS部分,在其中添加放置静态文件的目录路径,在该部分的注释中说到,需要使用绝对路径,不要使用相对路径,并且无论在任何系统中都使用“/”作为路径分隔符。

 

步骤二:配置contrib.staticfiles

在settings.py文件中找到INSTALLED_APPS,确保其中包含有’django.contrib.staticfiles',本人使用的是1.4.3版本,该配置以默认加入了,因此也不用特别配置,如果你开发的时候使用的是runserver方式启动服务器,那么你就完成了所有配置,如果你使用其他服务器来开发,则还需要在项目的urls.py中加上如下配置:

from django.contrib.staticfiles.urls import staticfiles_urlpatterns

# ... the rest of your URLconf goes here ...

urlpatterns += staticfiles_urlpatterns()

 需要注意的是,上面代码的第一行必须放在整个urls文件的第一行,上面代码的最后一行必须放在urls文件的最后一行。

 

 

【第二部分:在template中使用静态文件】

两种使用方式:

    方法1: 使用context processor:

          采用这种方式需要有一些额外配置,打开settings.py,确认TEMPLATE_CONTEXT_PROCESSORS中包含有'django.core.context_processors.static',本人使用的是1.4.3版本,打开后没有找到TEMPLATE_CONTEXT_PROCESSORS一项配置,那么自己加上这一项配置也可以生效,代码如下:

TEMPLATE_CONTEXT_PROCESSORS = (
    'django.core.context_processors.debug',
    'django.core.context_processors.i18n',
    'django.core.context_processors.media',
    'django.core.context_processors.static',
    'django.contrib.auth.context_processors.auth',
    'django.contrib.messages.context_processors.messages',
)

         配置完成后,在模板中引用静态文件如下:

<img src="{{ STATIC_URL }}images/hi.jpg" />

          如果你是手写的views部分方法,那么目前访问还不能生效,还需要在views.py中使用RequestContext来处理request请求后才能生效,如果你使用的generic view(通用视图),那么可以忽略一下配置,因为其中已使用RequestContext自动处理了:

from django.template import RequestContext
from django.shortcuts import render_to_response

def index(request):
    return render_to_response('index.html', RequestContext(request))

   

    附注: 本人亲自试验过这种配置方式,但最终请求url地址有点诡异,暂时未找到原因和解决方法,因此这种方法需继续测试,慎用!

 

     方法2: 使用template标签的方式:

     这种方式比较简便,在本人开发过程中也比较易用,不用额外配置,也不用在每个view中添加RequestContext,在template中可以直接使用,示例代码如下:

#直接使用
{% load staticfiles %}
<img src="{% static "images/hi.jpg" %}" />

#变量方式使用
{% load staticfiles %}
<link rel="stylesheet" href="{% static user_stylesheet %}" type="text/css" media="screen"/>

    上面代码第一种方式是直接硬编码静态文件地址,第二种方式是使用变量方式使用静态文件,使用第二种方式时可以如下代码所示:

from django.shortcuts import render_to_response

def index(request):
    return render_to_response('index.html', {'user_stylesheet': 'css/user.css'}) #将user_stylesheet加入context传入template进行渲染

 

 实际开发的静态文件部署及访问方式待补充

 

参考:

1. 官方静态文件设置文档

分享到:
评论

相关推荐

    Django 添加静态文件的两种实现方法(必看篇)

    Django添加静态文件有两种方法: 首先setting.py配置文件中添加静态文件的路径: STATICFILES_DIRS = [ os.path.join(BASE_DIR, “statics”),] statices为你所建立的存放静态文件的文件夹名 然后进行引用。 1、...

    Django压缩静态文件的实现方法详析

    django静态文件配置原理 静态文件配置就是为了让用户请求时django服务器能找到静态文件返回。 首先要理解几个概念: 媒体文件:用户上传的文件 静态文件:css,js,image等 开发环境:使用django内置服务器处理...

    解决Django加载静态资源失败的问题

    原因:django部署方式比较特别,采用静态文件路径:STATICFILES_DIRS的部署方式,之前你写的相对路径,绝对路径因为缺少静态文件路径而全部失效 做页面显示时,肯定少不了加载css,js等文件吧,但是在Django中,我们...

    django中静态文件配置static的方法

    我们可以使用Template 设置我们的网页,同时,一个完美的网页需要css,js,image 等静态文件的支持,这篇文章主要介绍了django中静态文件配置static的方法,感兴趣的小伙伴们可以参考一下

    详解Django模版中加载静态文件配置方法

    主要介绍了Django模版中加载静态文件配置方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

    Apache运行python的django程序配置文件

    Apache运行python的django程序配置文件

    Django框架静态文件处理、中间件、上传文件操作实例详解

    Django静态文件处理、中间件、上传文件 静态文件处理 在Django中,一般专门创建一个static目录来存放静态文件(css,js,image,video等文件)。 a. 在创建目录前,我们需要配置静态文件的路径。如: #在项目的...

    Django静态资源部署404问题解决方案

    static下存放静态文件,templates下存放网页模板文件 2.修改setting.py 找到 STATIC_ROOT = … 在后面追加一行,然后保存 3.html引入js 4.前端验证 5.后台验证 您可能感兴趣的文章:django 解决自定义序列化...

    django配置app中的静态文件步骤

    首先,我们需要确认在settings.py文件中的INSTALLED_APPS变量中存在 django.contrib.staticfiles INSTALLED_APPS = ( 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django...

    Django中的静态文件管理过程解析

    Static files管理 static files指一些用到的像css,javascript,images之类的文件。...当然也可以直接放在my_app/static中,但这样的话,如果在不同的app中有相同名字的静态文件,就会产生冲突。 4.模板中使

    django-static-precompile:django 的静态文件预编译器

    django 中已经有很多对静态文件的压缩和预编译的支持,即 django-compresser,但它们只有在 django 模板中使用一些自定义标签时才有效。 由于缓存管理,每次呈现模板时都会导致一些时间开销,并且此问题仍然存在于...

    django静态文件加载的方法

    首先要在settings文件中进行设置,关于静态文件的设置选项主要由以下几项: 1. STATIC_URL = '/static/' 指定静态文件查找的url。这样设置后一般来说我们只要把静态文件放在 APP 中的 static 目录下就可以,但是...

    ThemeLove#gitbook_python#13-Django-静态文件处理1

    1.静态文件 1.在项目中的settings.py文件中定义静态文件的引用路径和存放的物理目录 2.在项目根目录下创建static目录,再创建images、cs

    django-livesync:Django应用程序,当Django开发服务器重新启动或修改了静态文件和模板时,它会自动重新加载浏览器

    这是什么项目这是一个简单的Django应用程序,它将在每次重新启动Django Development Server或进行任何静态文件或模板更改时自动重新加载浏览器。 除此之外,如果您在开发服务器上连接多个浏览器和设备,这些浏览器和...

    django模板加载静态文件的方法步骤

    因此在 DTL 中加载静态文件是一个必须要解决的问题。在 DTL 中,使用 static 标签来加载静态文件。要使用 static 标签,首先需要 {% load static %} 。加载静态文件的步骤如下: 首先确保 django.contrib....

    Django框架静态文件使用/中间件/禁用ip功能实例详解

    本文实例讲述了Django框架静态文件使用/中间件/禁用ip功能。分享给大家供大家参考,具体如下: 静态文件 一、静态文件的使用 静态文件:网页中使用的css,js,图片 静态文件的使用: 在项目下创建静态目录,比如:...

Global site tag (gtag.js) - Google Analytics