当前位置:   article > 正文

Django——3.模板进阶(自定义过滤器、标签及模板继承)_django 过滤器

django 过滤器

目录

模板进阶

自定义过滤器

使用自定义过滤器

带参过滤器

自定义标签

补充:

模板继承

准备工作

如何实现模板继承

模板语法

extends

block 、endblock

block.super

include 


我是在Item_2这个应用目录下进行的操作

准备工作都做好了,看看能否跑成功。

成功了,开始我们的操作。

参考:如何编写自定义的模板标签和过滤器 | Django 文档 | Django (djangoproject.com)

模板进阶

自定义过滤器

首先在我们的应用目录Item_2下面的与migrations同级新建一个名为templatetags的软件包(名字别写错了),在templatetags里面创建一个.py文件,在这个文件下写自定义的过滤器标签。

在custom.py文件中我们写入:

这样我们就自定义好了我们想要的过滤器,接下了,我们如何使用它

使用自定义过滤器

在Item_2的目录下找到view.py,与url.py文件,进行如下操作,

在自建的模板目录total_templates下建立一个Item_2的目录,在此目录下新建一个.html的文件,为了方便记忆我的是low.html

运行,在网页中我们可以看出:Are YOU ready----被显示为are you ready。

带参过滤器

在custom_1.py文件在定义带参过滤器:

在low.html中使用:

在views.py文件中添加参数value:

value不存在时,刷新页面:

value存在时,刷新页面:

自定义标签

在custom_1.py文件在定义标签:

在views.py中添加参数A、B、C

在low.html在使用标签

刷新页面:

补充:

还可以将一个页面的内容渲染到另一个页面上

先在total_templates/item_2/下与low.html同级新建一个.html文件,我的是uuuu.html

在custom_1.py文件下声明一个inclusion_tag标签

在uuuu.html文件下写入:

在low.html文件下写入:

刷新页面则可看到:

则将uuuu.html文件的内容引入到low.html文件中了。

模板继承

准备工作

在views.py中先定义一个函数:

def mode_test(request):
    return render(request,'item_2/box.html')

在total_templates/item_2/下与low.html同级新建一个.html文件,我的是box.html

在urls.py文件在写入mode_test的路径名

在box.html中写入你想要呈现的结果

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>box的页面</title>
  6. <style>
  7. .top{
  8. background: hotpink;
  9. height: 20px;
  10. }
  11. .CONTENT{
  12. display: flex;
  13. }
  14. .content_1{
  15. background: sandybrown;
  16. height: 1000px;
  17. width: 80%;
  18. }
  19. .content_2{
  20. background: lightblue;
  21. height: 1000px;
  22. width: 20%;
  23. }
  24. </style>
  25. </head>
  26. <body>
  27. <div class="top">我是页面</div>
  28. <div class="CONTENT">
  29. <div class="content_1">我是内容1</div>
  30. <div class="content_2">我是内容2</div>
  31. </div>
  32. </body>
  33. </html>

在网页面中显示:

如何实现模板继承

我们首先要在total_templates目录下创建一个base.html,将box.html文件下的内容复制到base.html中,将<title>box的页面</title>改为<title>base的页面</title>,将box.html文件里面的内容清空,我们要实现的效果是:在不写代码的情况下,在box.html中能呈现base.html的内容(box页面继承base页面)现在刷新页面:空白什么都没有

模板语法

extends

在box.html文件在使用模板语法

在里面写入{% extends 'base.html' %}     #extends后面接的是 从那个的地方引入的文件

刷新页面则可看到,box页面被box页面展现出来了。

block 、endblock

现在要求box页面展现出来的base页面里面的内容有变换,但是不改变base页面。

我们采用挖坑填坑的方式

在base.html中,想要修改那一段,就用 block、endblock将其包围起来,然后在将其复制到box.html文件中即可。

eg:将base.html文件中的top中的”我是页面“改为”我现在是box页面了“

base.html文件:(挖坑)

box.html文件:(填坑)

刷新页面:

block.super

在继承的过程中,我们既需要自己的有想要父类的,可以通过block.super来完成

eg:我们想要在“我是内容1”的下面加上“我想要刷抖音”

先在base.html中挖坑

在box.html中填坑

刷新页面:

include 

include也是可以将一个页面的内容渲染到另一个页面中,但是要在模块里面(坑里面)才能实现

在total_templates目录下面在新建一个.html文件,我的叫include_tes.html文件

在里面写入:<h1>你好呀,结束了,我要睡觉了</h1>

在base.html中写入

在box.html中写入

刷新页面:

这样include_tes的页面中的内容就会在box页面中展示出来了。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/人工智能uu/article/detail/769249
推荐阅读
相关标签
  

闽ICP备14008679号