最后一次探究django(回顾模板层)

模板层

后端朝html页面传递数据的两种方式:

第一种:render(request, 'index.html', {'k':v})

第二种:render(request, 'index.html', locals())

后端给html传递的数据类型:

  • 字符串,列表,字典,元组,集合,数字,布尔等数据类型
  • 函数名(函数名会自动加函数执行)
  • 对象(相当于在前端页面打印了该对象)

前端访问容器类型数据的属性或方法统一采用句点符(.)

有序类型 直接点索引访问对应的值

字典  直接取key

再调用函数或方法的时候不支持传参

过滤器

n|length 统计长度
n|default:'不存在'
n|date:'Y-m-d'
n|filesizeformat
n|slice:'0:8:2'
n|truncatechars:10
n|truncatewords:10
n|add:1

n|safe 前端取消转义的方式

from django.utils.safestring import madk_safe() 
make_sade("<h1>我是a标签</h1>") 后端取消转义的方式

标签

# for循环
{% for foo in user_list %}
    {{ foo }}
    {{ forloop }}
    {% empty %}
{% endfor %}

# if判断
{% if flag %}
    flag有值
{% elif tag %}
    tag有值
{% else %}
    两个都没有值

# 前端模板语法for循环和if判断可以嵌套使用
{% with hooby.qweeresdksmd as h %} # 起别名
    {{ h }}
    {{ hobby.qweeresdksmd}}
{% endwith %}

自定义(过滤器,标签,inclusion_tag)

自定义必须要走三个过程:

  1. 在应用下新建一个名为templatetags的文件夹
  2. 自新建的文件夹下新建一个任意名的py文件(my_tag.py)
  3. 在新建的py文件中固定写下面两句话( from django import template    register = template.Library() )
# 自定义过滤器
@register.filter(name='body')
def index(a, b):
    return a+b

# 自定义标签
@register.simple_tag(name='index')
def index(a, b, c, d):
    return a+b+c+d

# 自定义inclusion_tag
@register.inclusion_tag('login.html', name='xxx')
def index(n): # 产生login.html小页面所需的数据
    return {"data":data}

使用这些自定义的过滤器,标签,inclusion_tag, 首先加载我们自定义的页面:

{% load my_tag %}
{{ num|index:10}}
{% index 1 2 3 4 %}
{% xxx 10 %}

模板的继承和导入

index.html

index.html
{% block content %}
    内容
{% endblock %}

被继承的模板
{% extends 'index' %}
{% block content %}
    {{ block.super}}
    子页面内容
{% endblock %}

模板的导入
{% include 'login.html' %}

模板中的block块儿越多页面的可扩展性越强,一般取三个块的内容(css, 内容(content),js)

模板主要针对静态网页页面的复用,自定义的内容针对动态数据的传输。

静态文件的配置:

{% load static %}
		两种动态获取路径的方式
	<link rel='stylesheet' href="{% static 'css/mycss.css'%}">  # 第一种方式
	<link rel='stylesheet' href="{% get_static_prefix %}css/mycss.css">  # 第二种方式

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,关于Django的模型、视图和模板,我可以做个简单的介绍: Django是一个MVC框架,其中的M、V、C分别指的是模型、视图和控制器(其中控制器Django中对应的是URLconf),而这里的MVC与传统的MVC有所不同,更倾向于MVT的架构,即模型(Model)、视图(View)和模板(Template)。 - 模型(Model):模型主要是把应用中需要用到的数据以类似面向对象的方式进行定义、管理和操作,通常对应database中的表。Django中的ORM(Object-relational mapping)对开发者屏蔽了底的SQL操作,开发者可以直接以Python语言去操作数据库,而不需要关心底SQL的实现细节。 - 视图(View):视图最主要的作用是处理用户的请求,响应相应的结果给用户。一般来说,视图会从数据库、缓存等数据源中获取数据,然后将结果进行组装,返回HttpResponse给用户。Django中视图可以通过函数或者类的方式来定义,对外提供一个可被URLconf调用的可调用对象。 - 模板(Template):模板是视图生成响应结果的主要组成部分,可以理解为一个动态生成的HTML页面,其中包含了数据展示、控制逻辑、页面渲染等元素。Django中的模板提供了超过100个内置的指令和过滤器,开发者可以非常方便的实现模板的渲染和页面的实现。 总结一下,模型主要和数据打交道,视图主要和操作和生成Http Response联系在一起,模板主要负责页面的渲染和数据展示。希望这个介绍可以帮到你。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值