• 【Dgango】模版


    继承

    ① extends用法:只继承一个模版

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>{% block title %}{% endblock %}</title>
        <link rel="stylesheet" href="/static/commons.css" />
        <style>
            .pg-header{
                height: 50px;
                background-color: seashell;
                color: green;
            }
        </style>
        {% block css %}{% endblock %}
    </head>
    <body>
        <div class="pg-header">小男孩管理</div>
    
        {% block content %}{% endblock %}
        <div class="pg-footer"></div>
        <script src="/static/jquery.js"></script>
        {% block js %}{% endblock %}
    </body>
    </html>
    templates/master.html #母模版
    {% extends 'master.html' %}                 <!--继承模版-->
    {% block title %}DIY网站{% endblock %}      <!--继承模版里面的块-->
    
    {% block content %}
        <h1>用户管理</h1>
        <ul>
            {% for i in u %}
                <li>{{ i }}</li>
            {% endfor %}
        </ul>
    {% endblock %}
    
    {% block css %}
        <style>
            body{
                background-color: red;
            }
        </style>
    {% endblock %}
    templates/tpl1.html #子版
    def tpl1(request):
        user_list = [1,2,3,4]
        return render(request,'tpl1.html',{'u':user_list})
    app01/xiews.py

    ②include用法 :(可以多个重复操作)

    <form>
        <input type="text"/>
        <input type="submit"/>
    </form>
    templates/tag.html #母模版
    {% extends 'master.html' %}                 <!--继承模版-->
    {% block title %}DIY网站{% endblock %}      <!--继承模版里面的块-->
    
    {% block content %}
        <h1>用户管理</h1>
        <ul>
            {% for i in u %}
                <li>{{ i }}</li>
            {% endfor %}
        </ul>
    
        {% include 'tag.html'%}                 <!--导入单独组件-->
        {% include 'tag.html'%}
    
        {% for i in u %}                         <!--循环4次-->
            {% include 'tag.html'%}
        {% endfor %}
    
    
    {% endblock %}
    
    
    {% block css %}
        <style>
            body{
                background-color: red;
            }
        </style>
    {% endblock %}
    templates/tpl1.html #子板

    ③自定义simple_tag,filter

    a、在app中创建templatetags文件夹

    b、创建任意 .py 文件,如:daly.py

    from django import template
    
    register = template.Library()
    
    @register.simple_tag
    # 可以传入多个参数
    def hanshu(a1,a2):
        return a1 * a2
    
    # filter方法:
    # @register.filter
    # def func(a1,a2)
    app01/temlatetags/daly.py

    c、在使用自定义simple_tag的tpl2.html文件中导入之前创建的 daly.py 文件名

    {% load daly %}
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        {{ name}}
        {{ name|lower}}
    
        {% hanshu 2  6 %}    <!--对应daly.py中的hanshu-->
    </body>
    </html>
    templates/tpl2.html

    # 自定义simple_tag与filter优缺点:
    simple_tag 中:
      {% 函数名 a1 a2 a3... %}
      缺点:不能作为if条件
      优点:参数任意

    filter 中:
      {{ a1|函数名:"a2,a3" }} {{a1|函数名:数字 }}
      缺点:最多两个参数,不能加空格:
      优点:能作为if条件

    d、在settings中配置当前app,不然django无法找到自定义的simple_tag

    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'app01',
    ]
    project/settings.py

    e、views.py代码

    def tpl2(request):
        name = 'abcABC'
        return render(request,'tpl2.html',{'name': name })
    app01/views.py

    # 还有个inclusion_tag方法
    
    # view视图:
    from django.template import Library
    register = Library()
    @register.inclusion_tag('menu.html')
    def menu(request):
    	# 从数据库中获取数据,menu_result接收并返回
    	...
    	return {'menu_result':menu_result}
    
    	
    # menu.html:
    {% load 视图文件 %}
    <body>
        <div class="pg-header">
            头部菜单
        </div>
        <div class="pg-content">
            <div class="menu">
                <!--相当于执行def menu函数并拿到menu_resul返回值-->
                {% menu request %} 
    			...
            </div>
            <div class="content">
                {% block content %}{% endblock %}
            </div>
        </div>
        {% block js %} {% endblock %}
    </body>
    </html>
  • 相关阅读:
    Unsafe(转载) 规格严格
    MySQL 中文 规格严格
    2007“奥普迪杯”开放式实时在线辞典系统设计大赛
    2007“奥普迪杯”开放式实时在线辞典系统设计大赛
    2007年个人回忆与总结
    蔡学镛:2008编程语言走势解盘
    用scanf实现gets的功能
    2007年个人回忆与总结
    用scanf实现gets的功能
    初学入门:如何有效编写软件的75条建议
  • 原文地址:https://www.cnblogs.com/dalyday/p/8991234.html
Copyright © 2020-2023  润新知