变量值从views.py传入html

  • 基本语法

    • {{ abc }}

      变量abc外,用双大括号包裹

    • {% for item in abc %}

      语句外,用大括号+百分号包裹

1. 传递字符串

  • views.py中,def内

    注意views.py外部变量(str1)不需要引号包裹,*.html内部变量(strHtml)需要引号包裹
def index(request):
str1 = "someValue"
return render(request, 'index.html', {"strHtml1": str})
  • index.html中,<body>内
<div>{{ strHtml1 }}<div>

2. 传递列表

  • views.py中,def内
def index(request):
list1 = ["someValue1", "someValue2","someValue3"]
return render(request, 'index.html', {"listHtml1": list1})
  • index.html中,<body>内
<div>
{% for item in listHtml1 %}
{{ item }}
{% endfor %} <div>{{ listHtml1.0 }}</div>
<div>{{ listHtml1.1 }}</div>
<div>{{ listHtml1.2 }}</div>
</div>
  • 效果

3. 传递字典

  • views.py中,def内
def index(request):
dict1 = {"key1": "someValue1", "key2": "someValue2", "key3": "someValue3"}
return render(request, 'index.html', {"dictHtml1": dict1})
  • index.html中,<body>内
<div>
{% for k in dictHtml1.keys %}
{{ k }}
{% endfor %} <br><br><br> {% for v in dictHtml1.values %}
{{ v }}
{% endfor %} <br><br><br> {% for k,v in dictHtml1.items %}
<div>{{ k }}={{ v }}</div>
{% endfor %} <br><br><br> <div>{{ dictHtml1.key1 }}</div>
<div>{{ dictHtml1.key2 }}</div>
<div>{{ dictHtml1.key3 }}</div>
</div>
  • 效果

4. 传递列表中的字典

  • views.py中,def内
def index(request):
list_info = [
{"name": "zhang", "age": 14, "province": "hunan"},
{"name": "li", "age": 15, "province": "tianjin"},
{"name": "tian", "age": 16, "province": "shanghai"},
]
return render(request, "index.html", {"listHtml1": list_info})
  • index.html中,<body>内
<div>{{ listHtml1.1 }}</div>
<div>{{ listHtml1.1.name }}</div>
<div>{{ listHtml1.1.age }}</div><br> {% for item in listHtml1 %}
<div>{{ item.name }} : {{ item.age }} : {{ item.province }}</div>
{% endfor %} <br> <ul>
{% for item in listHtml1 %}
<li> {{ item.name }} : {{ item.age }} : {{ item.province }} </li>
{% endfor %}
</ul> <br>
  • 效果

  • 附加知识:django html条件语句
{% if strHtml1 == "abc" %}
……
{% elif strHtml1 == "def" %}
……
{% else %}
……
{% endif %}

总结

  • {{ }}、{% %} 这些替换字符串,会被django在渲染html时替换,因而不会被终端用户看见
  • mosh(一个老外)的经验,尽量在views.py里写条件语句,写在html里会造成代码界面混乱

来源:BV1NL41157 武沛齐《2022 B站最详细django3教程(django从入门到实践)》P9

django入门 03 模板语法的更多相关文章

  1. Django框架之模板语法【转载】

    Django框架之模板语法 一.什么是模板? 只要是在html里面有模板语法就不是html文件了,这样的文件就叫做模板. 二.模板语法分类 一.模板语法之变量:语法为 {{ }}: 在 Django ...

  2. Django框架之模板语法(重要!)

    一.什么是模板? 只要是在html里面有模板语法就不是html文件了,这样的文件就叫做模板. 二.模板语法分类 1.模板语法之变量:语法为 {{ }}: 在 Django 模板中遍历复杂数据结构的关键 ...

  3. vue简介、入门、模板语法

    在菜鸟教程上面学习的vue.js.同时结合vue中文文档网站,便于自己记录. vueAPI网站:API 1. 简介 Vue.js(读音 /vjuː/, 类似于 view) 是一套构建用户界面的渐进式框 ...

  4. django入门之模板的用法

    1.为什么要使用模板? 看下以前的代码 #-*- coding:utf-8 -*- from django.shortcuts import render from django.http impor ...

  5. Django学习笔记(3)——表单,测试和模板语法的学习

    一,表单form 为了接收用户的投票选择,我们需要在前段页面显示一个投票界面,让我们重写之前的polls/detail.html文件,代码如下: <h1>{{ question.quest ...

  6. Django 03 模板路径、模板变量、常用的过滤器

    Django 03 模板路径.模板变量.常用的过滤器 一.模板路径 #1.在每个app下面添加一个templates文件 #2.在项目views.py里面第33行INSTALLED_APPS里面添加上 ...

  7. Django——模板层(template)(模板语法、自定义模板过滤器及标签、模板继承)

    前言:当我们想在页面上给客户端返回一个当前时间,一些初学者可能会很自然的想到用占位符,字符串拼接来达到我们想要的效果,但是这样做会有一个问题,HTML被直接硬编码在 Python代码之中. 1 2 3 ...

  8. Django(四)框架之第三篇模板语法

    https://www.cnblogs.com/yuanchenqi/articles/6083427.htm https://www.cnblogs.com/haiyan123/p/7725568. ...

  9. django模板语法

    Django 模板语法 Django 模板语法 一.模板 只要是在html里面有模板语法就不是html文件了,这样的文件就叫做模板. 二.模板语法 模板语法变量:{{ }}在Django模板中遍历复杂 ...

随机推荐

  1. C. Not Equal on a Segment(codeforces)

    C. Not Equal on a Segment time limit per test 1 second memory limit per test 256 megabytes input sta ...

  2. python-mysql-replication原理分析

    源码地址:https://github.com/noplay/python-mysql-replication 文件解析: ├── binlogstream.py ├── bitmap.py ├── ...

  3. uniapp滑动操作

    <view @touchmove="handletouchmove" @touchstart="handletouchstart" @touchend=& ...

  4. <数据结构>hash进阶

    hash函数构建 采取26进制 对于字符串str,令**H[i] = H[i-1]*26 + index(str[i]) **,最后H[i-1]就是str的hash值 问题:hash值过大,无法表式 ...

  5. Java EE数据持久化框架 • 【第1章 MyBatis入门】

    全部章节   >>>> 本章目录 1.1 初识MyBatis 1.1.1 持久化技术介绍 1.1.2 MyBatis简介 1.1.2 Mybatis优点 1.1.3 利用Mav ...

  6. Java初学者作业——定义管理员类(Admin),管理员类中的属性包括:姓名、账号、密码、电话;方法包括:登录、显示自己的信息。

    返回本章节 返回作业目录 需求说明: 定义管理员类(Admin),管理员类中的属性包括:姓名.账号.密码.电话:方法包括:登录.显示自己的信息. 实现思路: 分析类的属性及其变量类型. 分析类的方法及 ...

  7. Java练习小题_求一个3*3矩阵对角线元素之和,矩阵的数据用行的形式输入到计算机中 程序分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。

    要求说明: 题目:求一个3*3矩阵对角线元素之和,矩阵的数据用行的形式输入到计算机中 程序分析:利用双重for循环控制输入二维数组,再将 a[i][i] 累加后输出. 实现思路: [二维数组]相关知识 ...

  8. 编写Java程序,实现对兵营类的封装,将兵营类中的所有属性设置为私有访问权限,方法设置为公有访问权限

    返回本章节 返回作业目录 需求说明: 实现对兵营类的封装 将兵营类中的所有属性设置为私有访问权限. 将兵营类中所有属性的赋值方法设置为公有访问权限. 要求兵营名称的长度在4-8位之间. 要求兵营士兵的 ...

  9. IIS部署php项目——discuz论坛

    1.安装CgiModule模块 首先,IIS要部署php项目,需要CgiModule模块的支持,所以首先我们要确认这个模块是否存在 打开IIS管理器: 我这里是存在的: 如果不存在,可以自行在控制面板 ...

  10. ASP.NET+MVC入门踩坑笔记 (一) 创建项目 项目配置运行 以及简单的Api搭建

    哈喽各位 我又回来了! 前段时间研究了下ASP.NET,刚开始也是随便找网上的各种教程来看,但是鉴于本人技术有限,还是走了相当长的一段弯路的.所以我写下了这篇文章.希望各位刚刚入坑的ASP.NET开发 ...