模板引擎

为了方便演示,所以我们这边创建一个子应用temp来编写

python manage.py startapp temp

注册子应用到settings.py文件中

INSTALLED_APPS = [
 # ...
 "temp",
]

在子应用temp目录下创建子路由文件urls.py,代码:

from django.urls import path
from . import views
urlpatterns = [

]

在总路由中, 添加当前子应用temp的urls路由列表

from django.contrib import admin
from django.urls import path,include
urlpatterns = [
   path('admin/', admin.site.urls),
# ...
   path('temp/', include("temp.urls")), # namespace就是属于include的第二个参数, 用于进行反向解析
]

基于MVT模式, django规定, 我们要创建界面, 需要创建视图.每一个不同的url地址对应一个视图函数.视图中的外观,则应用由前端代码来完成.但是我们不会让前端工作人员学习了django再开发.所以我们需要提供一个模板目录让前端人员,放置他们的前端,并和我们的服务端django代码进行隔离.

配置模板引擎

  1. 在项目中创建模板目录templates

  1. 在settings.py文件中, 在TEMPALTES配置项.指定上面创建的模板目录地址,基于BASE_DIR项目根目录来设置路径

    # templates 模板目录
    TEMPLATES = [
      {
           # backend驱动,加载静态文件的驱动, 核心类库, DjangoTemplates 我们通常称之为 django的模板引擎
           'BACKEND': 'django.template.backends.django.DjangoTemplates',
           'DIRS': [ # 模板路径列表
               os.path.join(BASE_DIR, "templates"),
          ],
           'APP_DIRS': True,
           'OPTIONS': {
               'context_processors': [
                   'django.template.context_processors.debug',
                   'django.template.context_processors.request',
                   'django.contrib.auth.context_processors.auth',
                   'django.contrib.messages.context_processors.messages',
              ],
          },
      },
    ]

     

  2. 在temp.views.py文件中创建一个视图函数,例如叫index,显示模板中的html内容.

    from django.shortcuts import render
    from django.http.response import HttpResponse
    # Create your views here.
    def index(request):

       return




    (request, template_name="index.html")


    def list(request):

       return render(request, template_name="goods/list.html")

     

  3. 在上面视图中render中设置的template_name对应的就是模板文件名或者模板路径,则可以在templates模板目录下进行创建

    <!DOCTYPE html>
    <html lang="en">
    <head>
       <meta charset="UTF-8">
       <title>Title</title>
    </head>
    <body>
       <h1>模板首页</h1>
    </body>
    </html>

 

在for循环输出内容的时候, 模板系统中会默认提供一个 forloop的对象给我们用于操作循环中的次数

forloop.counter  显示本次循环中的次数[序号],从1开始
forloop.counter0 显示本次循环中的次数[序号],从0开始
forloop.revcounter0 显示本次循环中的次数[序号],倒序显示,到0
forloop.revcounter 显示本次循环中的次数[序号],倒序显示,到1
forloop.first 当本次属于循环的第一次,则结果为True
forloop.last 当本次属于循环的最后一次,则结果为True

 

过滤器

过滤器的文件地址: django/template/defaultfilters.py

safe,禁用转义,告诉模板这个变量是安全的,可以解释执行
length,长度,返回字符串包含字符的个数,或列表、元组、字典的元素个数。
default,默认值,如果变量不存在时则返回默认值
date,日期,用于对日期类型的值进行字符串格式化

过滤器的使用

{# 过滤器 #}
<p>{{ title | upper | lower }}</p>
{{ logo | safe }}

{{ lve | length }}
{{ lve | first }}

{{ born | date:"Y-m-d H:i:s" }} {# 2019-11-11 00:00:00 #}

 

posted on 2021-03-30 19:23  rider_yang  阅读(105)  评论(0)    收藏  举报