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>
{% 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 %}
def tpl1(request): user_list = [1,2,3,4] return render(request,\'tpl1.html\',{\'u\':user_list})
②include用法 :(可以多个重复操作)
<form> <input type="text"/> <input type="submit"/> </form>
{% 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 %}
③自定义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)
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>
# 自定义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\', ]
e、views.py代码
def tpl2(request): name = \'abcABC\' return render(request,\'tpl2.html\',{\'name\': name })
# 还有个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模版的主要内容,如果未能解决你的问题,请参考以下文章
dgango 报错: Timeout when reading response headers from daemon process