码迷,mamicode.com
首页 > 其他好文 > 详细

Django 之 template

时间:2021-03-31 12:21:15      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:enc   str   assets   cut   个数   子应用   install   lock   文件中   

模板引擎

为了方便演示,所以我们这边创建一个子应用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 #}

 

Django 之 template

标签:enc   str   assets   cut   个数   子应用   install   lock   文件中   

原文地址:https://www.cnblogs.com/yhxy/p/14598385.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!