django入门笔记4- template

本文详细介绍了Django模板系统的配置方法、渲染模版的快捷方式、模版的互相引用、模版的继承、变量的使用、模版标签的运用、过滤器及上下文配置等内容,旨在帮助开发者更深入地理解并熟练掌握Django模板系统的各项功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

模版的配置

       1.在settings中

              TEMPLATE_DIRS= (

                     '/home/django/mysite/templates',

              )

              或者

              TEMPLATE_DIRS= (

                     os.path.join(os.path.dirname(__file__),'templates').replace('\\','/'),

              )

       2.渲染模版的快捷方式

              return  render_to_response('current_datetime.html', {'current_date': now})

              或者(locals包含了所有当前的变量,包括request,内容相当庞大,但是很省事,有利有弊)

              return  render_to_response('current_datetime.html', locals())

 

             

模版的互相引用,当一个部分有重合的时候,可以使用这种方法

       {%include "nav.html" %}

 

模版的继承

       1.定义

       <!DOCTYPEHTML PUBLIC "-//W3C//DTDHTML 4.01//EN">

       <htmllang="en">

       <head>

              <title>{%block title %}{% endblock %}</title>

       </head>

       <body>

              <h1>Myhelpful timestamp site</h1>

              {%block content %}{% endblock %}

              {%block footer %}

              <hr>

              <p>Thanksfor visiting my site.</p>

              {%endblock %}

       </body>

       </html>

      

       2.使用

       {%extends "base.html" %}

       {%block title %}The current time{% endblock %}

       {%block content %}

{{ block.super }}

       <p>Itis now {{ current_date }}.</p>

       {%endblock %}

      

      

模版中的变量,当使用{{ foo.bar }}的时候,查询顺序是:

       字典类型查找 (比如 foo["bar"] )

       属性查找 (比如 foo.bar )

       方法调用 (比如 foo.bar() )

       列表类型索引查找 (比如 foo[bar] )

 

模版标签

       {%if %} 和 {% endif %}

              1.如果有多个判定逻辑使用多层嵌套的方式解决,不要多个and连用

              {%if athlete_list %}

                     {%if coach_list or cheerleader_list %}

              2.并没有 {% elif %} 标签, 请使用嵌套的`` {% if %}`` 标签来达成同样的效果

 

       {%for athlete in athlete_list %}

              <p>{{athlete.name }}</p>

       {%empty %}

              <p>Thereare no athletes. Only computer programmers.</p>

       {%endfor %}

              1.{%empty%}标签是for特有的当元素列表为空的判断

              2.for没有退出循环和continue标签,只能通过内部的标志位来跳过语句的执行

              3.for提供的便捷计数器

                     forloop.counter

                     forloop.counter0

                     forloop.revcounter0#还剩下多少个

                     forloop.first#是否是第一个,布尔值

                     forloop.last#是否是最后一个

                     {{forloop.parentloop.counter }} 加上一个parentloop可以得到上个循环的内容,

             

       {%ifequal user currentuser %}

              <h1>Welcome!</h1>

       {%endifequal %}

              1.判断两个变量是否相等

 

       {#This is a comment #}

              单行注释

 

       {%comment %}

       Thisis a

       multi-linecomment.

       {%endcomment %}

              多行注释

      

       {%autoescape off %}

              Hello{{ name }}

       {%endautoescape %}

              一段文字不转意输出

      

 

常用过滤器

       {{name|lower }} 小写

       {{my_list|first|upper }} 把第一个字母转换为大写

       {{bio|truncatewords:"30" }}只显示30个单词

       {{pub_date|date:"F j, Y" }} 格式化时间

       {{var | length  }} 字符串的长度

       {{var | safe  }} 直接输出不转意

      

      

在逻辑判定中表示false

       列表([] )

       空元组(() )

       空字典({} )

       空字符串('' )

       零值(0 )

       特殊对象None

       对象False(很明显)

      

      

通用上下文的配置

       1.settings里面配置

       TEMPLATE_CONTEXT_PROCESSORS= (

              'django.core.context_processors.auth',

              'django.core.context_processors.debug',

              'django.core.context_processors.i18n',

              'django.core.context_processors.media',

       )

       2.定义相应的上下文生成函数

       defcustom_proc(request):

              "Acontext processor that provides 'app', 'user' and 'ip_address'."

              return{

                     'app':'My app',

                     'user':request.user,

                     'ip_address':request.META['REMOTE_ADDR']

              }

       3.直接在模版中使用即可

 

      

自定义标签过滤器

1.在app目录下(和views平行)创建一个django的包:templatetags

2.一个简单的过滤器内容如下,在目录下创建一个py文件custom_filter.py

   from django import template

   import settings

 

   register = template.Library()

 

   @register.filter(name="formate_status")

   def formate_status(value):

       return settings.STATUS_LIST[value]

       

3.在模版页面中

   {%load custom_filter %}

   {{ t.status|formate_status }}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值