Dgango模版

Posted dalyday

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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>

以上是关于Dgango模版的主要内容,如果未能解决你的问题,请参考以下文章

使用 Git 来管理 Xcode 中的代码片段

dgango 报错: Timeout when reading response headers from daemon process

python Dgango保存图片

dgango 反射

dgango报错收集

dgango-博客项目之点赞与评论