Django中模板的使用

1,模板介绍

1,创建模板与模板配置
    在 settings.py 中有一个 TEMPLATES 变量
    1. BACKEND : 指定模板的引擎
    2. DIRS : 指定保存模板的目录们
    3. APP_DIRS : 是否要在应用中搜索模板本
    4. OPTIONS : 有关模板的选项们
2,修改配置
	修改settings.py文件,设置TEMPLATES的DIRS值为
	'DIRS': [os.path.join(BASE_DIR, 'templates')]
3,模板的加载方式
	1, from django.template import loader
       t = loader.get_template("模板名称")
       html = t.render()
       return HttpResponse(html)
       
    2, from django.shortcuts import render
       return render(request,'模板的名称')
       
4,模板的传参
  	1, 在模板中使用变量语法(双大括号)
       {{ 变量名 }}
urls:
urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^page2$', views.page2_render),
    ]
    
views:
class Dog:
    def __init__(self,k,c):
        self.kinds=k
        self.color=c
    def info(self):
        return self.color+"的"+self.kinds+"狗"
        
def page2_render(request):
    d={"name":"老魏",
       "age":35,
       "hobby":["看书","看电影"],
       "friend":{"name":"小张","age":25},
       "pet":Dog("二哈","黑白色"),
      }
   # 第二种传参方式
    return render(request,'page2.html',d)
    
templates:



    
    
    
    Document


    

这是一个带参数的模板

姓名:{{name}}

年龄:{{age}}

爱好:{{hobby}}

第一个爱好:{{hobby.0}}

第一个爱好:{{hobby.2}}

朋友:{{friend}}

朋友名字:{{friend.name}}

宠物:{{pet}}

宠物种类:{{pet.kinds}}

宠物颜色:{{pet.color}}

宠物方法:{{pet.info}}

Django中模板的使用_第1张图片

    2, 后端中
       必须将变量封装到字典中才允许传递到模板上
       dict = {
            	"变量1":"值1",
            	"变量2":"值2",
     		  }
5,模板的标签
   1,作用:将一些服务端的功能嵌入到模板中
   2,标签语法
       {% 标签 %}
       {% 结束标签 %}
   3,if标签
       {% if %}
       ...
       {% elif %}
       ...
       {% else %}
       ...
       {% endif %}
views:
def page3_tag(request):
    tag={"name":"魏",
         "has_car":None,
         "age":65,
         "hobby":["读书","看报","喝茶","吹牛"],
        }
    return render(request,'page3.html',tag)
urls:
urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^page3$', views.page3_tag),  
    ]
    
templates:
{% if has_car %}
    

{{name}} 有车

{% else %}

{{name}} 么有车

{% endif %} ``` 
   4,for标签(内置变量forloop,for...empty标签,cycle标签, )
       {% for 变量 in 可迭代对象 %}
       {% endfor %}
{% for x in hobby %}
    
  • 第{{forloop.counter}}个爱好:{{ x }}
  • {% if forloop.first %}
  • -----------------------
  • {% endif %} {% empty %}

    ---数据为空---

    {% endfor %}
       5,cycle标签(常和for循环搭配使用 依次循环调用cycle后面的值)
    
    views:
    class Students:
        def __init__(self,name,age,score):
            self.name=name
            self.age=age
            self.score=score
    
    def page4(request):
        students={
        "students":[
                 Students("小张",10,100),
                 Students("小李",20,200),
                 Students("小张",30,300),
                ]
                 }
        return render(request,'page4.html',students)
        
    templates:
    {% for s in students %}
        
             {{ s.name }}
             {{ s.age }}
             {{ s.score }}
        
    {% endfor %}
    

    Django中模板的使用_第2张图片

       6,注释    {# 被注释的内容 #}
    

    2,过滤器

    1,作用:在变量输出前,对其值进行处理以改变变量的显示
    2,语法:{{变量|过滤器1:参数1|过滤器2:参数2...}}
    
    3,举例:
    	string='Welcome to Beijing'
    	

    string={{string}}

    大写内容是:{{ string | upper }}

    省略后的内容:{{ string | truncatechars:14 }}

    省略后的内容:{{ string | truncatewords:1 }}

    省略后的大写内容:{{ string | truncatechars:14 | upper }}

    4, 文档参见:
         
         
    5,转义
    开启转义
    {% autoescape on %}
        {{ body }}
    {% endautoescape %}
    
    关闭转义
    {% autoescape off %}
        {{ body }}
    {% endautoescape %}  
    

    3,模板的继承

    1,作用:当前模块继承来自一个父模块
    2,语法:{% extends '父模块名称' %}
    
    3,举例:
    {% extends "./base2.html" %}
    {% extends "../base1.html" %}
    {% extends "./my/base3.html" %}
    
    4,对于父类模板 可以修改的部分
    {% block body01 %}
    {% endblock %}
    5,对于子类 先要继承父类 再重写
    {% block body01 %}
    	修改后的部分
    {% endblock %}
    

    4,url反向解析

    1,作用:根据urls列表中关键字name=来确定唯一的名字,可以根据这个名字反推出此url的信息
    2,语法:url(regex, views, kwargs=None, name="别名")
     举例:url(r'^user_login/$', views.login, name="login")
     在模板中: {% url '别名' %}
               {% url '别名' '参数值1' '参数值2' %}
    
    3,示例
    urls:
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'^person/(\w+)$', views.person,name='person'),
        url(r'^info/(\w+)$', views.info,name='info'),
    ]
    
    views:
    def person(request,name):
        return render(request,'person.html',locals())
    
    def info(request,name):
        s=name+"的个人信息"
        return HttpResponse(s)
    
    templates:
    
    
    
        
        Document
    
    
        

    姓名:{{name}}

    {# {% url ‘别名’ ‘参数值1’ ‘参数值2’ %} #} 跳转到{{name}}个人信息

    Django中模板的使用_第3张图片
    Django中模板的使用_第4张图片

    你可能感兴趣的:(题纲,代码)