一、模板继承

目的是:减少代码的冗余

语法:

  1. {% block classinfo %}
  2.  
  3. {% endblock %}

具体步骤:

1、创建一个base.html文件,
2、把要显示的页面的内容写在这里面,也就是html要在浏览器显示的内容
3、在right里面写个盒子
  {% block classinfo %}

  {% endblock %}
在这里面写个空盒子,以后谁来扩展就在这个盒子里面添加相应的内容就行了

4、然后再创建一个.html文件,让这个继承base.html文件,
  {% extends "base.html" %}    #必须是在文件的第一行
  在基板里面添加内容
  {% block classinfo %}
    <h2>首页</h2>
    <h2>学生信息</h2>
    <h3>{{ class_id }}班</h3>
  {% endblock%}

5、也可以写好多盒子,
  在left中写个盒子
    {% block menu %}
      <p>I see you you</p>
    {% endblock %}

注意:
  盒子里面可以有默认的内容,如果有默认的时候你不扩展就走默认的,如果你扩展了,就替换了,
那么不替换直接追加可以嘛?可以的,那就用下面的方式。
{% block.super %}

例如:

  1. {% block menu %}
  2.  
  3.   {{ block.super }}
  4.  
  5.   <p>!!!</p> #先继承父类的,后插入数据
  6.  
  7. {% endblock %}

1、模板继承围绕两点:继承和扩展
          你有什么继承什么,       
          扩展的是盒子,
2、模板中设置的盒子越多越好,因为这样你想扩展的时候就容易了。我想扩展就扩展了。不扩展就不扩展了
3、为了更好的可读性,你也可以给你的 {% endblock %} 标签一个 名字 。例如:

  1. {% block content %}
  2. ...
  3. {% endblock content %}  

4、如果你发现你自己在大量的模版中复制内容,那可能意味着你应该把内容移动到父模版中的一个 {% block %} 中。

最后,请注意你并不能在一个模版中定义多个相同名字的 block 标签。这个限制的存在是因为block标签的作用是“双向”的。这个意思是,block标签不仅提供了一个坑去填,它还在 _父模版_中定义了填坑的内容。如果在一个模版中有两个名字一样的 block 标签,模版的父模版将不知道使用哪个block的内容。

具体例子说明

urls.py

  1. urlpatterns = [
  2. url(r'^admin/', admin.site.urls),
  3. url(r'^text/(\d+)', views.text),
  4. ]

views.py

  1. from django.shortcuts import render,redirect
  2.  
  3. # Create your views here.
  4.  
  5. def text(request,class_id):
  6. # 班级变量
  7. print(class_id) #拿到的是你在路径里输入的几就是几
  8. # 数据库查询
  9. return render(request, "text.html", {"class_id": class_id})

templaite / base.html

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width">
  7. <link rel="stylesheet" href="/static/bootstrap-3.3.7-dist/css/bootstrap.min.css">
  8. <title>Title</title>
  9. <style>
  10. .right {
  11. height: 400px;
  12. background-color: silver;
  13. }
  14. </style>
  15. </head>
  16. <body>
  17. {#导航条#}
  18. <nav class="navbar navbar-primary navbar-inverse">
  19. <div class="container-fluid">
  20. <!-- Brand and toggle get grouped for better mobile display -->
  21. <div class="navbar-header">
  22. <button type="button" class="navbar-toggle collapsed" data-toggle="collapse"
  23. data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
  24. <span class="sr-only">Toggle navigation</span>
  25. <span class="icon-bar"></span>
  26. <span class="icon-bar"></span>
  27. <span class="icon-bar"></span>
  28. </button>
  29. <a class="navbar-brand" href="#">Brand</a>
  30. </div>
  31.  
  32. <!-- Collect the nav links, forms, and other content for toggling -->
  33. <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
  34. <ul class="nav navbar-nav">
  35. <li class="active"><a href="#">Link <span class="sr-only">(current)</span></a></li>
  36. <li><a href="#">Link</a></li>
  37. <li class="dropdown">
  38. <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true"
  39. aria-expanded="false">Dropdown <span class="caret"></span></a>
  40. <ul class="dropdown-menu">
  41. <li><a href="#">Action</a></li>
  42. <li><a href="#">Another action</a></li>
  43. <li><a href="#">Something else here</a></li>
  44. <li role="separator" class="divider"></li>
  45. <li><a href="#">Separated link</a></li>
  46. <li role="separator" class="divider"></li>
  47. <li><a href="#">One more separated link</a></li>
  48. </ul>
  49. </li>
  50. </ul>
  51. </div><!-- /.navbar-collapse -->
  52. </div><!-- /.container-fluid -->
  53. </nav>
  54. {#内容#}
  55. <div class="containers">
  56. <div class="row">
  57. <div class="col-md-11 col-lg-offset-1">
  58. {# 左侧#}
  59. <div class="left col-md-3">
  60. {% block menu %}
  61. <div class="list-group">
  62. <a href="#" class="list-group-item active">
  63. 学生班级
  64. </a>
  65. <a href="/text/6" class="list-group-item">s6</a>
  66. <a href="/text/7" class="list-group-item">s7</a>
  67. <a href="/text/8" class="list-group-item">s8</a>
  68. <a href="/text/9" class="list-group-item">s9</a>
  69. </div>
  70. {% endblock %}
  71. </div>
  72. {# 右侧#}
  73. <div class="right col-md-8">
  74. {# 定义一个盒子#}
  75. {% block classinfo %}
  76. {% endblock %}
  77. </div>
  78. </div>
  79. </div>
  80. </div>
  81. {#底部#}
  82.  
  83. </body>
  84. </html>

template /text.py   继承上面的文件

  1. {% extends "base.html" %}

  2. {% block classinfo %}
  3. <h1>学生信息</h1>
  4. <h3>{{ class_id }}班级</h3>
  5. {% endblock %}

  6. {#追加#}
  7. {% block menu %}
  8. {{ block.super }}
  9. <a href="">学生信息</a>
  10. {% endblock %}

二、静态文件配置

我们自己导入的一些包就叫做静态文件

1、在全局中先创建一个static的包,

2、在static里面导入我们的bootstrap,还是jquery等

3、然后在settings.py中加上一些配置

  1. STATIC_URL = '/static/' #这个配置就相当于下面配置的别名,如果这里的名字修改了就按照这里的名字去导入
  2. STATICFILES_DIRS = [
  3. os.path.join(BASE_DIR,"static") #E:\day68\static 找到static路径
  4. ]

4、导入css,js,jquery

  1. <link rel = "stysheet",href= "/static/index.css/">
  2.  
  3. <link rel="stylesheet" href="/static/bootstrap-3.3.7-dist/css/bootstrap.min.css">

Django框架之模板基础,静态文件配置的更多相关文章

  1. Django框架、HTTP协议、文件配置、路由设置、

    1.socket服务端.py import socketsk = socket.socket()sk.bind(("127.0.0.1",8000))sk.listen()whil ...

  2. Django模版中加载静态文件配置详解

    .settings.INSTALLED_APPS下添加:django.contrib.staticfiles .settings.py下添加:STATIC_URL = '/static/' . ()在 ...

  3. Django(五)框架之模板继承和静态文件配置

    https://www.cnblogs.com/haiyan123/p/7731959.html 一.模板继承 目的是:减少代码的冗余 语法: {% block classinfo %} {% end ...

  4. Django框架之模板继承和静态文件配置

    一.模板继承 目的是:减少代码的冗余 语法: {% block classinfo %} {% endblock %} 具体步骤: 1.创建一个base.html文件,2.把要显示的页面的内容写在这里 ...

  5. Django框架----模板继承和静态文件配置

    母板 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8& ...

  6. Django框架(二)-- 基本配置:app注册、模板配置、静态文件配置、数据库连接配置post和get

    一.app 在Django中,APP可以用以下类比 大学 --------------------项目 计算机学院------------app01 土木学院 ------------ app02 1 ...

  7. Django框架(二)—— 基本配置:app注册、模板配置、静态文件配置、数据库连接配置post和get

    目录 app注册.模板配置.静态文件配置.数据库连接配置post和get 一.app 二.模板配置 三.静态文件配置 四.数据库连接配置 五.get请求和post请求 六.新手三件套 七.登录功能案例 ...

  8. [Django框架 - 静态文件配置、request对象方法初识、 pycharm链接数据库、ORM实操增删改查、django请求生命周期]

    [Django框架 - 静态文件配置.request对象方法初识. pycharm链接数据库.ORM实操增删改查.django请求生命周期] 我们将html文件默认都放在templates文件夹下 将 ...

  9. Django框架之第二篇--app注册、静态文件配置、form表单提交、pycharm连接数据库、django使用mysql数据库、表字段的增删改查、表数据的增删改查

    本节知识点大致为:静态文件配置.form表单提交数据后端如何获取.request方法.pycharm连接数据库,django使用mysql数据库.表字段的增删改查.表数据的增删改查 一.创建app,创 ...

随机推荐

  1. Jquery Deferred 详解

    近期由于公司项目主要由我来负责前端,所以打算优化一下代码.在jquery 里面有个Deferred的对象.为了研究这个也看了不少资料,其中阮一峰的博客写的很详细,这里转载一下. 一.什么是deferr ...

  2. nginx-1.14.0安装

    1.百度搜索Nginx,点击Nginx news官网,点击nginx-1.13.10进入下载网页,选择Stable version的版本之后下载. 2.进入根目录,cd / 3.在根目录下创建soft ...

  3. EasyUI combobox 加载JSON数据《一》

    Action返回 JSON 格式如下: jsonResult = { total=7,rows=[ {TEXT=技术支持, ID=402894ca4419acf1014419b148a10000}, ...

  4. GridView解决同一行item的高度不一样,如何同一行统一高度问题?

    问题描述: 有时我们使用GridView会面对类似这种情况. 这是是不是一脸愣逼,我们理想情况是把他变成这样 保证同一行的item都是一样高这样就美观许多了 注意:上面的两张图片是盗图,用来作为效果观 ...

  5. Enterprise Architect UML建模

    UML建模 前言 UML建模资料已经很多了,有人想用有人不用,有人会用也有人不会用,本文只是作者的一篇UML建模总结,不想去写太细,因为真正的你去用下,去画下就基本都会了.工具毕竟是工具,设计和思想才 ...

  6. jQuery特效:图片的轮播

    Flexslider图片轮播.文字图片相结合滑动切换效果 地址:http://www.helloweba.com/view-blog-265.html 示例:http://www.helloweba. ...

  7. 【转】 VC++6.0 在Win7 64位下调试,Shift+F5无法退出

    Win7 64位VC++6.0调试代码无法关闭窗口解决方法 VC++6.0 在64位Windows7下调试的时候,再结束调试,程序无法退出,只能关闭VC++6.0 IDE环境. 问题描述:当我击F5开 ...

  8. String, JSONArray , JSONObject ,Map<String, Object> 与对象

    String pic = "[{\"picServiceUrl\": \"0f4bb44afb2e48d48b786d3bbdeec283/20180408/6 ...

  9. webpack 从入门到工程实践

    from:https://www.jianshu.com/p/9349c30a6b3e?utm_campaign=maleskine&utm_content=note&utm_medi ...

  10. SQL语句的添加、删除、修改多种方法 —— 基本操作

    添加.删除.修改使用db.Execute(Sql)命令执行操作 ╔----------------╗ ☆ 数据记录筛选 ☆ ╚----------------╝ 注意:单双引号的用法可能有误(没有测试 ...