zoukankan      html  css  js  c++  java
  • Django App(五) load static files

            经过前面4篇的努力,已经基本完成了,polls站点的功能,但是所有界面都没有涉及样式,和JavaScript的导入.到目前为止了解到的Django是通过解析Url来完成对客户端的响应的,那么组成站点所必须的css,script,image这些不需要服务器编译的静态资源是如何加载的

           1.新建静态资源文件夹及文件

              类似app模板,新建路径及文件polls/static/polls/site.css,App目录结构如下:

              

              编辑site.css如下: 

    body
    {
         background:red;
         color:white;
    }

            2.模板引入css样式

               在polls/templates/polls/index.html引入css,代码如下:

    {% load static %}
    
    <link rel="stylesheet" type="text/css" href="{% static 'polls/style.css' %}" />

               

               查看html在浏览器的源码,可以知道 load static 引入的是相对路径/static/,这个配置是在项目包名目录下settins.py里面:

               

               我们把静态资源放在App下就是因为这种引入方式,决定了静态资源的实际路径,明白了这个之后,我们把静态资源移动到项目根目录下,使用最原始html的方式引入: 

    <link rel="stylesheet" type="text/css" href="/static/polls/site.css"/>

              好了刷新下界面还是生效的,注意:本例中生成浏览器中的文件地址是:

                    http://localhost:8000/static/polls/site.css 

              而不是我们理解的因为在polls App下,

                    http://localhost:8000/polls/static/polls/site.css

               这个是因为Django查找static files的方法是在不同的应用程序中去匹配,如果有多个应用程序有重名的文件,Django是分不清楚的,它干脆返回第一个匹配到的(这个跟View中有重名函数的情况刚好相反,函数重名是返回最后一个匹配到的,比如下面的代码),所以我们在建css文件的时候,特意在static下面建了polls的二级文件夹加以区分!

    def vote(request, question_id):
        return HttpResponse("The First!")
    def vote(request,question_id):
        return HttpResponse("The Second!")

               

           

               

                由于是初学者,还有个问题是:站点经常把静态的资源放在站点根目录下,所有App共享,这个问题以后再探讨吧???

              

  • 相关阅读:
    nginx通过配置防止DDoS攻击
    BZOJ 2120 数颜色(单点修改莫队)
    数论模板
    BZOJ 2002 [Hnoi2010]Bounce 弹飞绵羊(分块)
    HDU 4609 3-idiots(FFT)
    BZOJ 3527 [Zjoi2014]力(FFT)
    快速对拍
    HDU 1402 A * B Problem Plus(FFT)
    FFT
    BZOJ 5319: [Jsoi2018]军训列队(可持久化线段树)
  • 原文地址:https://www.cnblogs.com/andayhou/p/8350564.html
Copyright © 2011-2022 走看看