zoukankan      html  css  js  c++  java
  • 使用Django来处理对于静态文件的请求

    引言

    本方法适用于linux+python2.7+django1.2,使用django自带的web服务。

    同样也适用于sina app engine。

    1、准备工作

    准备css文件,准备js文件,准备image文件。

    在网站根目录新建目录【medias】,在【medias】目录新建目录【styles】,用来存放css文件。

    2、配置对于静态文件访问的路径

    2.1、在settings.py文件中添加静态文件的目录

    假设mysite是网站的根目录,medias是刚才我们新建的目录

    1
    2
    3
    4
    5
    6
    7
    STATICFILES_DIRS = (
        # Put strings here, like "/home/html/static" or "C:/www/django/static".
        # Always use forward slashes, even on Windows.
        # Don't forget to use absolute paths, not relative paths.
        'mysite/medias'
        
    )

    2.2、在urls.py文件中添加如下路由规则

    1
    2
    3
    4
    5
    6
    7
    urlpatterns=patterns('',
     
        (r'^site_medias/(?P<path>.*)$','django.views.static.serve',
            {'document_root':mysite.settings.STATICFILES_DIRS, 'show_indexes': True}),
         
         
    )

    将对于site_medias目录及其子目录的文件的请求,映射到settings.py文件设置的STATICFILES_DIRS中指定的路径。并且使用了show_indexes参数,参数设置为True之后,表明可以通过浏览器,浏览medias目录的资源,包括浏览文件夹及其文件。浏览地址是http://localhost:8080/site_medias/,假设服务使用端口是8080,在设置了上面的选项之后,应该可以通过该地址浏览文件夹及文件。

    3、使用静态文件

    3.1、在template文件中引用css文件

    在base.html文件的head标记中添加下面的css引用。

    1
    <link href="/site_medias/styles/site.css" rel="stylesheet" type="text/css">

    3.2、在普通html文件中引用css文件

    也是直接在html文件的head标记中添加下面的内容。

    1
    <link href="/site_medias/styles/site.css" rel="stylesheet" type="text/css">

    总结

    完成上面的工作之后,css就应该开始起作用了。对于图片和js的引用也是类似的做法。

    在django的官网有两个链接讲到了相关的内容,详细情况大家可以点击查看。

    https://docs.djangoproject.com/en/1.2/howto/static-files/

    上面这个链接的主题是:How to serve static files,也就是如何使用静态文件(包括css,js脚本,图片等等)。里面讲到了,可以使用上面的办法使用静态文件,但是django主要是用来处理动态文件的,上面的办法不高效,并且不安全,所以是不推荐的。在开发环境用一下还可以,但是生产环境,推荐使用专业的web服务来提供静态文件的处理。专业的web服务包括:appache、lighttpd、cherokee等等。结合这些专业web服务的用户,在文章中也有链接。

    https://docs.djangoproject.com/en/dev/howto/static-files/

    上面的链接就是将如何使用django来处理静态文件,一些处理的细节,包括配置啊、引用啊什么呢的。

  • 相关阅读:
    easyUI 后台经典框架DEMO下载
    一个通过JSONP跨域调用WCF REST服务的例子(以jQuery为例)
    WCF的三个名称/命名空间,你是否傻傻分不清楚?
    未找到与约束ContractName Microsoft.VisualStudio.Text.ITextDocumentFactoryService... 匹配的导出 VS2012报错
    jquery easyui tabs单击刷新右键刷新
    在64位Windows7上安装64位Oracle11g
    Linux入门
    服务器硬件知识
    IP后面带/30 /29 /27等是什么意思?
    vitualbox安装centos7卡死
  • 原文地址:https://www.cnblogs.com/zhwl/p/4301055.html
Copyright © 2011-2022 走看看