随笔 - 77  文章 - 0  评论 - 0  阅读 - 21363 

模板引擎

为了方便演示,所以我们这边创建一个子应用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   rider_yang  阅读(85)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示