码迷,mamicode.com
首页 > 编程语言 > 详细

python之django母板页面

时间:2018-07-02 23:00:32      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:编辑   publish   pre   char   作者   blog   win   support   deb   

其实就是利用{% block xxx %}   {% endblock %}的方式定义一个块,相当于占位。存放在某个html中,比如base.html

然后在需要实现这些块的文件中,使用继承{% extends "base.html" %}的方式引入母板文件,然后在{% block xxx %}......{% endblock %}块定义中实现具体的内容。

 

base.html示例:注意块的定义。

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
    <meta name="description" content="">
    <meta name="author" content="">
    <link rel="icon" href="http://v3.bootcss.com/favicon.ico">
    <link rel="stylesheet" href="https://cdn.bootcss.com/font-awesome/4.7.0/css/font-awesome.css">
    <title>所有的书都在这里</title>
    {% block page_css %}
    {% endblock %}
    {% block page_js %}
    {% endblock %}

    <!-- Bootstrap core CSS -->
    <link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">

    <!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
    <link href="http://v3.bootcss.com/assets/css/ie10-viewport-bug-workaround.css" rel="stylesheet">

    <!-- Custom styles for this template -->
    <link href="http://v3.bootcss.com/examples/dashboard/dashboard.css" rel="stylesheet">

    <!-- Just for debugging purposes. Don‘t actually copy these 2 lines! -->
    <!--[if lt IE 9]><script src="http://v3.bootcss.com/assets/js/ie8-responsive-file-warning.js"></script><![endif]-->
    <script src="http://v3.bootcss.com/assets/js/ie-emulation-modes-warning.js"></script>

    <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
    <!--[if lt IE 9]>
      <script src="https://cdn.bootcss.com/html5shiv/3.7.3/html5shiv.min.js"></script>
      <script src="https://cdn.bootcss.com/respond.js/1.4.2/respond.min.js"></script>
    <![endif]-->
</head>

<body>

{% include "nav.html" %}

<div class="container-fluid">
    <div class="row">
        <div class="col-sm-3 col-md-2 sidebar">
            <ul class="nav nav-sidebar">
                <li class="{% block book_class %}{% endblock %}"><a href="/book_list/">所有的书 <span class="sr-only">(current)</span></a>
                </li>
                <li class="{% block publisher_class %}{% endblock %}"><a href="/publisher_list/">出版社</a></li>
                <li class="{% block author_class %}{% endblock %}"><a href="/author_list/">作者</a></li>

            </ul>
        </div>
        <div class="col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2 main">            
            {% block main_body %}
                {#这里是每个页面不同的部分#}
            {% endblock %}
        </div>
    </div>
</div>

<!-- Bootstrap core JavaScript
================================================== -->
<!-- Placed at the end of the document so the pages load faster -->
<script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<script>window.jQuery || document.write(<script src="http://v3.bootcss.com/assets/js/vendor/jquery.min.js"><\/script>)</script>
<script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<!-- Just to make our placeholder images work. Don‘t actually copy the next line! -->
<script src="http://v3.bootcss.com/assets/js/vendor/holder.min.js"></script>
<!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
<script src="http://v3.bootcss.com/assets/js/ie10-viewport-bug-workaround.js"></script>
</body>
</html>

 

某个继承页:

{# 继承母板 #}
{% extends ‘base.html‘ %}

{% block book_class %}
    active
{% endblock %}
{% block page_css %}
    {% load static %}
    <link rel="stylesheet" href="{% get_static_prefix %}book_list_only.css">
{% endblock %}

{#把自己页面的内容,填入母板里面相应的位置#}
{% block main_body %}
    <div class="panel panel-primary">
                <div class="panel-heading">
                    <h3 class="panel-title">我是自定义内容,用来替换母板中指定的位置</h3>
                </div>
                <div class="panel-body">
                    <div class="row">
                        <div class="col-md-8"> </div>
                        <div class="col-md-4"><a href="/add_book/" class="btn btn-primary"><i class="fa fa-plus-square"></i> 添加新书</a>
                            <a href="/add_publisher/" class="btn btn-success"><i class="fa fa-plus-square"></i> 添加出版社</a></div>
                    </div>


                    <table class="table table-dark table-hover">
                        <thead>
                        <tr>
                            <th>#</th>
                            <th>id</th>
                            <th>名称</th>
                            <th>出版社</th>
                            <th>操作</th>
                        </tr>
                        </thead>
                        <tbody>
                        {% for b in books %}
                            <tr>
                                <td>{{ forloop.counter }}</td>
                                <td>{{ b.id }}</td>
                                <td>{{ b.title }}</td>
                                <td>{{ b.publisher.name }}</td>
                                <td>
                                    <a href="/del_book/?id={{ b.id }}" class="btn btn-danger"><i class="fa fa-trash fa-fw"></i>删除</a>
                                    <a href="/edit_book/?id={{ b.id }}" class="btn btn-info"><i class="fa fa-pencil fa-fw"></i>编辑</a>
                                </td>
                            </tr>
                        {% endfor %}
                        </tbody>
                    </table>

                </div>
            </div>
{% endblock %}

 

另一个继承页:

{% extends "base.html" %}
{% block main_body %}
            <div class="panel panel-primary">
                <div class="panel-heading">
                    <h3 class="panel-title">所有的出版社</h3>
                </div>
                <div class="panel-body">
                    <div class="row">
                        <div class="col-md-8"> </div>
                        <div class="col-md-4"><a href="/add_book/" class="btn btn-primary"><i class="fa fa-plus-circle fa-fw"></i>添加新书</a>
                            <a href="/add_publisher/" class="btn btn-success"><i class="fa fa-plus-circle fa-fw"></i>添加出版社</a></div>
                    </div>


                    <table class="table table-dark table-hover">
                        <thead>
                        <tr>
                            <th>#</th>
                            <th>id</th>
                            <th>名称</th>
                            <th>地址</th>
                            <th>操作</th>
                        </tr>
                        </thead>
                        <tbody>
                        {% for p in publisher %}
                            <tr>
                                <td>{{ forloop.counter }}</td>
                                <td>{{ p.id }}</td>
                                <td>{{ p.name }}</td>
                                <td>{{ p.addr }}</td>
                                <td>
                                    <a href="/del_publisher/?id={{ p.id }}" class="btn btn-danger"><i class="fa fa-remove fa-fw"></i>删除</a>
                                    <a href="/edit_publisher/?id={{ p.id }}" class="btn btn-info"><i class="fa fa-edit fa-fw"></i>编辑</a>
                                </td>
                            </tr>
                        {% endfor %}
                        </tbody>
                    </table>

                </div>
            </div>
  {% endblock %}
{% block publisher_class %}
    active
{% endblock %}

 

完整的练习项目代码。

 

python之django母板页面

标签:编辑   publish   pre   char   作者   blog   win   support   deb   

原文地址:https://www.cnblogs.com/frx9527/p/django_base.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!