博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
djano-模板层基础知识
阅读量:7099 次
发布时间:2019-06-28

本文共 3418 字,大约阅读时间需要 11 分钟。

########模板层########模板层其实就是templates文件夹里的html文件其实这里的每个html不是真正意义的上html代码,只有经过模板渲染过后才算的上真正的html页面。一、模板语言(变量,深度查询,过滤器,标签)1、变量    在django模板里通过{
{ name }} 表示一个变量,name就是一个变量名 首先我们要明白这个变量是怎么传出来的, 在视图层: return render(request,'index.html',local()) #local()就把当前视图函数的变量全部传到index.html模板中,这样就不要我们写太多代码了,但是 #也有缺点,就是把一些不需要渲染的变量也传了过去。 模板层: 当程序读到{
{开头,一直读到}}结尾,这里会有一个变量值,就会去名称空间里找相应的变量。这其实 和我们之前写socket写服务端一样的,读取文件,再用相应的变量去替换掉符合条件的字符串。 好了好了,说说变量吧,记住一点就行:{
{name}} ----> 相当于在python中执行了print(name)操作 你记住这个就行了!!!,这就是精髓。下面我就写写伪代码吧, name = 'zhuyu' #视图层定义的变量 {
{ name }} #在前台页面显示 zhuyu 后面我就不写注释了 list = [1,2,3,['hello','word']] {
{ list }} ---------> [1,2,3,['hello','word']] def run(): return 'run go' {
{ run }} ---------> 'run go' #这里我说下,在python中我们打印print(run),显示的函数的内存地址, #会出现'run go',只能说明模板中执行函数,打印了它的返回值。 zhuyu = User('zhuyu',19) #这里是User是一个类 {
{ zhuyu }} --------> '
.People object at 0x0000028D4DDDB240> ' #你在python中,打印一个对象,执行__str__,他的返回值就上面这个,所以说,看下面 {
{zhuyu.get_name}} -----> 'zhuyu ' #这是调用对象的方法,也是执行方法,打印的是它的返回值 总结:1、{
{ 变量名 }} 其实就是执行print操作 2、假如该变量是一个函数,或者对象的函数属性,就是帮你执行,打印执行后的返回值 3、不能打印带参数的函数,方法,这里要小心!!!!2、过滤器 {
{ 'name'|length }} 这是一个参数的过滤器 {
{ 'zhu'|add:'yu' }} 这是两个参数的过滤器 总结:|前是第一个参数,后面就是过滤器,冒号(:)就是第二个参数, 记住只能传两个参数,如果你想传多个参数的话,你可以为第二个参数写上指定的格式比如('a:b:c'),然后拿到该参数,也是就一个字符串,进行split(':')操作,这样你就拿到一个列表了,相当于你第二个参数传了三个参数,对不对。其实方法有很多的,看你自己怎么写了。3、标签 {
% %} ------> 表示一个标签,他是和变量、过滤器是有差距的,看也看得出来。 for循环: {
%for foo in foos%} {
% endfor %} if判断: {
% if %} {
% endif %} with(相当于给一个复杂的变量名赋别名): {
% with asdasdasdsa as as%} {
% endwith %} 总结:1、这些不都不用多说了,学过python,这些再清楚不过了,记住它的语法规定就行了,for循环,if判断,with都和python差不多。对了,for循环里有一个对       象,forlorp,是不在记不住你就在循环里打印看看是什么就好了 2、哦哦,还有不是if判断,它判断的条件可以是过滤器,过滤器就是判断它的返回值嘛,但不可以是标签,没有为什么。4、自定义过滤器,标签 (1)、首先在app文件中新建一个文件夹(包),名字必须为templatetags (2)、在该文件夹中新建py文件,名字随便你取:例如tags.py (3)、在py文件中导入模块,并且实例化一个对象,名字必须为register from django.template import library register = library() (4)、继续在该文件中写的函数,过滤器,标签其本质也是一个函数,但是你写的函数必须要有装饰器,这样才能成为过滤器,标签。 @register.filler(name='add') #这样写这个函数才是一个过滤器,对就是过滤器,name='add',给过滤器命名 def my_add(value1,value2): return value1+value2 @register.tag('add1') #这样写该函数才是标签,就是在上面加装饰器 def add_str(value1,value2,value3): return value1+value2+value3 (5)、上面的步骤,我们只是注册了过滤器,标签,想要使用的话,必须要在模板中导入 {
% load tags %} #这里的tags就是你新建的py文件 {
{ 'zhuyu'|add:'nb' }} #这里add就是我之前自定义的过滤器,不要在add 名字和已有的模板标签重名说到重名,我现在有个想法,它到底是执行django自带的过滤器,还是我定义的呢?这肯定是由先后的,自己去试试。 {% add1 'zhuyu' 'nb' '!'%} #这里这个add1标签必须传多个参数,用空格去区别。5、对了差点忘了深度查询 对于列表,字典在python中我们是怎么去取值的呢? name = ['zhuyu','zhanghao','daisongbai','wuyang','yangpeng'] info_dic = {
'name':''zhuyu,'age':21} 取列表的第二个元素: name[1] 取字典key为name: info_dic[name] 但是在模板中,是没有[]的,那么我们该怎么去取呢? 我们同一使用.,千万别看漏了小数点,我们用.去取值 取列表的第三个元素: name.3 #这是在模板中记住 取字典的key为age: info_dic.age 深度查询其实很简单,你可以一直.下去。 今天就更新结束,哈哈,我只是通过讲话的方式,来记录一些知识点。

 

转载于:https://www.cnblogs.com/zhuchunyu/p/9936823.html

你可能感兴趣的文章
GitHub Checks API帮助应用实现进一步的持续集成
查看>>
滴滴进入寒冬期,将裁员2000人
查看>>
埃隆·马斯克:比特币拥有着“极为出色”的结构,而纸质货币终将消失
查看>>
一行代码迁移TensorFlow 1.x到TensorFlow 2.0
查看>>
架构周报:十亿级红包的平台架构揭秘
查看>>
京东构建了全球最大的Kubernetes集群,没有之一
查看>>
亚马逊是如何进行软件开发的
查看>>
More than React(五)异步编程真的好吗?
查看>>
座谈会:Apache基金会那些事儿
查看>>
2017敏捷沙滩大会:完美软件,测量持续交付,以及探索未来
查看>>
某些编程语言更容易出错?研究人员提出质疑
查看>>
如何使用CloudFormation构建 VPC?
查看>>
从 SPA 到 PWA:Web App的下一站在哪?
查看>>
微软发布用于Serverless架构的Azure API Management
查看>>
又拍云黄慧攀QCon 2016技术分享:直播平台架构与实施
查看>>
用户故事 | 刷算法面试题的4种思考方式
查看>>
Scott Guthrie访谈:定制仪表板与Azure Monitor
查看>>
姜宁谈红帽绩效考核:不关心员工具体做什么
查看>>
Prometheus正式从CNCF毕业
查看>>
周末的时间,我们在GitHub用什么语言编程?
查看>>