Python Django进阶教程(二)(模版过滤器,标签)
Django版本:1.11
操作系统:Windows
Python:3.5
欢迎加入学习交流QQ群:657341423
上一节讲到Django的url和views的进阶使用。力求适应复杂多变的系统设计需求。
这节讲解的是模版的使用。在基础教程大概讲了用法。这里就展开详细讲解。
过滤器:‘|’管道符号代表使用过滤器。过滤器的作用就是在渲染模板之前,我们将变量的值进行修改,主要是对样式和格式的修改
html自动转意
自动转意:就是将html里面的变量直接显示出来。如果变量里面含义html语句,也会直接显示出来。如:
views.py
aa.html
运行结果:
你会看到<b>
是html的代码,但是django会自动转意,不会变成html的代码。而是当变量输出。
如果要关闭这个转意。
方法一:
views.py与上面的不变。
aa.html
运行结果:
你会看到,你好这变量变了加粗,也就是将变量里面的<b>
变成html的代码了。
方法二:
views.py与上面的不变。
aa.html
运行结果与上面的不变。就是将变量里面的<b>
变成html的代码了。注意,如果将off改为on,这个是开启转意的。
总结:
default的用法
在过滤器后加default会根据这个参数值是否为空而进行处理,如果在views里面传递这个参数为空,那么这个参数的值为default的默认值。
看看例子
views.py
aa.html
运行结果:
自定义模版库
这个分为自定义过滤器和自定义标签。这里就详细讲解过滤器。自定义标签可以参考官网即可。两者上其实大同小异的。
自定义过滤器网上教程有很多,无非都是在app里面建立一个templatetags文件夹,然后一个__init__
和 自定义过滤器的py文件。然后设置setting.py文件的INSTALLED_APPS。
但是对于一个新手而言。会有很多疑问,是不是一定要文件名为templatetags?INSTALLED_APPS怎样一个设置?templatetags文件夹是不是一样要在app里面?
1.自定义过滤器所在的文件夹一定为templatetags文件名
2.templatetags文件夹可以放在任何位置,除了项目目录。
3.INSTALLED_APPS设置为templatetags文件夹所在文件夹目录
如图所示:
项目目录有三个文件夹(myapp,mysetting,mysite)
mysite:项目主要设置(URL,setting等)
myapp:App项目。
mysetting:自定义文件夹。(存放自定义过滤器)
可以看到,我将templatetags放在自己生成的文件夹里面(注意,templatetags文件夹目录下有init文件的。)
当然,你也可以将templatetags放在app项目下。这个根据个人喜欢而定。
如果templatetags放在项目目录下,即和manage.py同一目录下,会报错。(not a registered tag library)
简单来说,在主项目(manage.py目录)下->文件夹(可以自己生成或app文件夹也可)(带init文件)->templatetags文件夹(自定义过滤器,标签)(带init文件)
看完templatetags文件夹路径设置,再看看INSTALLED_APPS设置,这个只需设置templatetags文件夹所在的文件夹的名即可。如图所示:
如果直接写成templatetags,会报错:(not a registered tag library)
基本上templatetags和INSTALLED_APPS设置注意事项就是这些。这也是很多教程都没有提及的事项。往往让很多人一面懵逼。
接下来讲解的是过滤器的写法,基本上这个网上教程很多,这里不详细说了,直接看代码。
这个过滤器功能直接将字符串a替换成空值。
对应的html文件
运行结果:
模版的高级使用,基本上都是过滤器和标签的使用,基本上个人认为,过滤器在实际开发中比较常用,例如讲手机号码变成13******1231这种常见的方法。
还有系统一些已生成的过滤器和自定义过滤器。
过滤器的使用,可以使views.py对变量的处理转到过滤器处理。减少代码的冗余。