`
lanceverw
  • 浏览: 44855 次
  • 性别: 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、...

    Djang中静态文件配置方法

    本篇将详细解释Django中静态文件的配置方法及其工作原理。 首先,我们需要理解静态文件与媒体文件的区别。静态文件包括CSS、JS和图像等,它们是网站设计的基础元素,不会根据用户的行为或数据进行动态改变。而媒体...

    python django 访问静态文件出现404或500错误

    总结来说,解决Django访问静态文件出错的问题,主要涉及检查`DEBUG`设置、设置`STATIC_URL`和`STATICFILES_DIRS`、配置静态文件查找器以及在Web服务器配置中正确映射静态文件。正确地执行这些步骤将确保你的用户能够...

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

    以下是关于Django模板中加载静态文件的配置方法的详细讲解: 1. **添加`django.contrib.staticfiles`到`INSTALLED_APPS`**: 在`settings.py`文件中,确保`django.contrib.staticfiles`被包含在`INSTALLED_APPS`...

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

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

    Django:Django静态文件与媒体文件处理.docx

    Django:Django静态文件与媒体文件处理.docx

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

    最后,在Nginx的配置文件中,你需要设置一个`location`块来处理`STATIC_URL`匹配的请求,将这些请求直接转发到`STATIC_ROOT`目录,以避免Django服务处理这些静态文件,从而减轻服务器负担。具体的Nginx配置因环境而...

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

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

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

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

    解决Django生产环境无法加载静态文件问题的解决

    #### 二、理解Django静态文件处理机制 为了更好地解决问题,首先需要了解Django是如何处理静态文件的。 - **开发环境**:在开发环境下,当`settings.DEBUG = True`时,Django会自动处理静态文件请求。也就是说,...

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

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

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

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

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

    最后,如果你没有在 `INSTALLED_APPS` 中包含 `django.contrib.staticfiles`,你需要在 `urls.py` 文件中手动处理静态文件的 URL 映射。以下是一个例子: ```python from django.conf import settings from django....

    腾讯云部署Django+Nginx+uWSGI+SimpleUI.解决 .svg文件不能显示问题

    - 在Nginx配置文件中,添加一个location块,配置SVG和其他静态文件的路径,确保它们能够被正确地服务。 4. 静态文件收集: - 运行`python3 manage.py collectstatic`命令,将Django和SimpleUI的静态文件复制到...

    django静态文件加载的方法

    通过合理配置Django的静态文件相关设置,并在模板中使用Django的静态文件模板标签,可以大大提升项目的可维护性和性能。在生产环境中,应使用专业的Web服务器来服务静态文件,并且要根据实际部署环境进行适当的配置...

    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.模板中使

Global site tag (gtag.js) - Google Analytics