AI智能
改变未来

Django框架提升(3)~模板


———–模板————–

定义模板

  • 变量var:视图传递给模板的数据

    注意:要遵守标识符规则语法:{{var}}<h1>{{stu.sname}}</h1>  #调用的模型里的属性<h1>{{stu.getName}}</h1> #调用模型里的方法注意:1.如果使用的变量不存在,则插入的是空字符串在模板中使用点语法字典查询属性或者方法数字索引在模板中调用对象的方法注意:不能传递参数
  • 标签tag

    语法:{%tag%}作用:在输出中创建一些文本控制逻辑和循环-if:    逻辑判断格式:1.{% if 表达式 %}语句 {%endif%}2.{% if 表达式 %}语句{%else%}语句2 {%endif%}3.{% if 表达式 %}语句{%elif%}语句2{%elif%}语句n{%else%}语句 {%endif%}示例: {%if num%}<h1>num={{num}}</h1>{%endif%}-for    遍历格式:1.{% for 变量 in 列表 %}语句2.{%for 变量 in 列表%}语句{%empty%}列表为空或者不存在时执行语句{%endfor%}变量:{{forloop.counter}} 表示当前是第几次循环-comment    注释格式:{%comment%}注释的内容{%endcomment%}-ifequal/ifnoteuqal     判断作用:判断是否相等或者不相等格式:{%ifequal 值1 值2%}如果值1=值2 执行此语句{%endifequal%}-include作用:加载模板并以标签内的参数渲染格式:{%include \'模板目录\' 参数1 参数2...%}-------------url-------------作用:反向解析格式:{%url \'namespace:name\' p1 p2%}注意:定义url时,需要为项目urls.py中include定义namespace属性,为应用urls.py中的path定义name属性并且在应用的urls.py声明命名空间:app_name= \'name属性\'工程urls.py:re_path(r\'^\',include(\'myApp.urls\',namespace=\"app\")),应用urls.py:re_path(r\'^good/(\\d+)$\',views.good,name=\"good\"),html:<a href=\"{% url \'app:good\' 1 %}\">反向解析链接</a>--------------------csrf_token------------------作用:用于跨站请求伪造保护默任写恶意的网站包含链接,表单,按钮,js。会利用登陆的用户在浏览器中认证从而攻击服务格式:{%csrf-token%}防止CSRF恶意攻击:1.在settings.py中MIDDLEWARE 加上:\'django.middleware.csrf.CsrfViewMiddleware\',但是这样自己本身服务器也无法访问2.在表单中 添加 {% csrf_token %}------------------------block、extends-------------------作用:模板继承可以减少页面的内容的重复定义,实现页面的重用block标签:在父模板中预留区域,子模版去填充语法:{% block 标签名 %}挖坑{% endblock %}extends标签:继承模板,需要写在模板文件的第一行语法: {% extends \'父模板路径\' %}{% block 标签名 %}填坑{% endblock%}示例:定义一个父模板定义子模板-------------------autoescape on/off---------------------作用:用于html转义问题:将接收到的code当成一个普通的字符串渲染views:return render(request,\'myApp/index.html\',{\"code\":\"<h1>haha </h1>\"})html:{{code}}目的:将接收到的字符串当成一个html代码渲染示例:html\":{% autoescape off %}   #off 关闭自动转义(不转成字符串){{code}}{% endautoescape %}-widthratio作用:乘法和除法格式:{% widthratio 变量 除数 乘数 %}<h1>num= {% widthratio num 1 5 %}</h1>验证码:作用:在用户注册,登录页面的时候使用,防止暴力请求。减轻服务器等待压力防止CSRF的一种方式
  • 过滤器

    {var|lower}} 小写{{var|upper }}  大写{{var|join}}格式:列表|join:\"#\"{{var|default}}如果一个变量没有被提供,或者值为false,空,可以使用默认值格式:{{var|default:\"#\"}}{{var|date}}根据给定格式转换为日期为字符串格式:{{vardata|data:\'y-m-d\'}}{{var|escape}}{{var|safe}}HTML转义示例:{{code|safe}}{{var|add}}加减格式:{{num|add:-数}}{{num|add:数}}{var|divisibleby}基数,偶数格式:{%表达式|divisibleby:2%}
赞(0) 打赏
未经允许不得转载:爱站程序员基地 » Django框架提升(3)~模板