上面我们有说过,用户发送请求的时候,视图会返回一个响应,响应可以是一个重定向,一个404错误,一个XML文档,一张图片或者是一个HTML内容的网页。前面几个返回的信息比较有限,我们重点更多是放在HTML内容的网页。我们把这样的页面按规范写好,然后都放在项目根目录下的templates文件夹里,这样的页面,我们称之为"模板"页面。

Django做为一个WEB框架,需要一种很便利的方法去动态生成HTML网页,因为有了模板这个概念。模板页面包含一些基础的HTML代码和一些特殊的语法,这些特殊的语法主要用于如何将数据动态的插入HTML页面中。

这些特殊的语法我们把它做变量、标签。变量是模板中最基本的组成单位。这些模板变量由视图函数生成的,然后通过上下文传递到模板里,然后由浏览器渲染出来。

上面的都是理论, 我们不管它。我们直接说如何在模板里调用视图函数传过来的变量。这些变量有很多种类型,也就是Python支持的数据类型比如:普通变量、列表、字典等。

在这之前我们要先设置好模板路径,把这个路径在settings里设置好,不然就没法访问我们的模板目录,之前我在文章:基础配置 里已经设置好了,下面我们直接使用就行。更多关于settings的配置可以查看文章:全局配置settings详解

一、变量

1、在文件myblog/urls.py里设置一个URL:

urlpatterns = [...path('', views.index), #把原来的views.hello修改成views.index  ''留空,表示为首页...
]

2、在文件blog/views.py里添加一个视图函数:

#添加一个函数
def index(request):#添加两个变量,并给它们赋值sitename = 'Django中文网'url = 'www.django.cn'#把两个变量封装到上下文里context = {'sitename': sitename,'url':url,}#把上下文传递到模板里return render(request,'index.html',context)

3、在项目根目录下templates文件夹里新建一个文件index.html,输入如下内容:

templates/index.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>MyBlog</title>
</head>
<body>
<h3>网站名:{{ sitename }}</h3>
<h3>域名:{{ url }}</h3>
</body>
</html>

然后启动项目,在浏览器里访问 http://127.0.0.1:8000 就可以查看到我们在视图函数里我们设置的内容。

代码里的{{ sitename }}{{ url}}就是模板变量,变量的数据类型是字符串或整形。在Django模板中,变量需要用{{ 变量名}}来显示。

二、列表

1、在视图函数index里添加如下代码:

blog/views.py

def index(request):sitename = 'Django中文网'url = 'www.django.cn'#新加一个列表list=['开发前的准备','项目需求分析','数据库设计分析','创建项目','基础配置','欢迎页面','创建数据库模型',]context = {'sitename': sitename,'url':url, 'list':list, #把list封装到context}return render(request,'index.html',context)

2、在模板文件index.html添加如下代码:

templates/index.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>MyBlog</title>
</head>
<body>
<h3>网站名:{{ sitename }}</h3>
<h3>域名:{{ url }}</h3>
{#新下面的代码#}
<div><ul><h4>Blog教程目录:</h4>{% for list in list  %}<li>{{ list }}</li>{% endfor %}</ul>
</div>
</body>
</html>

然后我们在浏览器里刷新页面,显示如下:

新加代码里{% for list in list %}{% for %}属于Django模板的内置标签,它可以遍历输出变量的内容。

三、字典

1、在视图函数里添加如下代码:

blog/views.py

def index(request):....#在来的基础上新加一个字典mydict={'name': '吴秀峰','qq': '445813','wx': 'vipdjango','email': '445813@qq.com','Q群': '10218442',}context = {...#把mydict封装到上下文'mydict':mydict,}return render(request,'index.html',context)

2、在模板文件index.html添加如下代码:

templates/index.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>MyBlog</title>
</head>
<body>
...
<!-- 新加如下代码 -->
<div><ul><h4>Blog教程作者信息:</h4>{% for key,values in mydict.items  %}<li>{{ key }}:{{ values }}</li>{% endfor %}</ul>
</div>
</body>
</html>

新加的代码里,{% for key,values in mydict.items %} 是遍历输出字典里的 key和values的内容。

我们刷新页面,就能看到新的效果:

上面的就是在模板里调用变量、列表、字典的方法。当然,模板里还有许多内置的标签和过滤器。这里就不一一介绍。后面我们用上的时候,我会做特别的提醒。

上述代码我已经上传到服务器,请大家自行下载查看:

模板体验代码.zip

参考链接:Django博客开发教程:体验django模板

Django 3.2.5博客开发教程:体验django模板相关推荐

  1. Django 3.2.5博客开发教程:体验数据查询

    进行数据查询之前,我们需要先进入我们的管理后台,在里面添加一些数据.然后我们用Pycharm打开我们的数据库.具体操作方法:用Pycharm可视化操作数据库 我们的数据结构长这般模样: 双击blog_ ...

  2. Django 3.2.5博客开发教程:基础配置

    创建项目之后,我们需要对项目进行最基础的配置.这些配置是我们做项目的时候必须要配置的,所以我们先提前配置好. 我们打开myblog目录下的settings.py文件. 一.设置域名访问权限 myblo ...

  3. Django 3.2.5博客开发教程:HelloWorld欢迎页面

    基础配置做好了之后,我们就可以先迁移数据到数据库,然后启动我们的项目,感受Django的魅力. 在Pycharm左下角底部的Terminal,会弹出Terminal终端窗口,Pycharm自动会帮我们 ...

  4. Django 3.2.5博客开发教程:用Admin管理后台管理数据

    上节我们我们把数据库迁移到数据库里去了,那么现在我们数据库里是个什么样的情况呢?我们点击Pycharm右上角的Database,然后在网站项目里选中我们的数据库文件db.sqlite3,把它拖到Dat ...

  5. Django 3.2.5博客开发教程:URL与视图函数

    在讲URL与视图函数之前我们先给大家简单介绍一下用户访问网站的流程.我们访问一个网站的时候,一般先打开浏览器,然后在浏览器的地址栏里输入一个网址,也就是URL,然后回车,我们就可以在浏览器里看到这个网 ...

  6. Django 3.2.5博客开发教程:使用富文本编辑器添加数据

    在Django admin后台添加数据的时候,文章内容文本框想发布一篇图文并茂的文章需就得手写Html代码,这十分吃力,也没法上传图片和文件.这显然不是我等高大上程序猿想要的. 为提升效率,我们可以使 ...

  7. Django 3.2.5博客开发教程:一些常用的模板使用方法

    一.django static文件的引入方式 1.在django project中创建 static文件夹 2.settings.py中配置要在 STATIC_URL = '/static/' 下边 ...

  8. Django 3.2.5博客开发教程:实现模板之前的分析与准备

    在之前的体验django模板.体验数据查询以及一些常用的模板使用方法文章里,向大家介绍了如何将数据库的数据展现到网页上,和一些简单的模板使用方法.之后我们就开始实现各种页面的展现. 在此之前,我们先从 ...

  9. Django 3.2.5博客开发教程:实现网站首页

    实现首页模板前,我们先把共公的页面模板base.html调用好.首先我们先看导航部分,除开首页和关于博主之外,其它的其实是我们的文章分类名.如图: 我们只需要在首页视图函数里,查询出所有的文章分类名称 ...

最新文章

  1. re.findall()用法详解
  2. win7变成xp风格了怎么改回_揭秘:干掉了win7!为何win10屡被吐槽它却“永世留芳”?...
  3. 你想要的宏基因组-微生物组知识全在这(181101)
  4. GE数字化重塑的启示:调整阵型,再战工业互联网!
  5. 简述Core Location定位功能
  6. python安装requests库pip不是_python pip安装requests时报错,怎么解决?
  7. java task多线程_JAVA语言-多线程实现的四种方式
  8. mysql查询分数前三个_Mysql 单表查询各班级总分前三名
  9. 【数字信号处理】相关系数 ( 相关系数概念解析 | 信号能量常数 | 共轭序列 | 序列在相同时刻的相关性 )
  10. Jmeter创建一个点对点的 JMS 测试计划
  11. android6.0源码分析之Camera API2.0下的初始化流程分析
  12. JAVA的内省机制(introspector)与反射机制(reflection)
  13. PHP操作数据库,不推荐使用mysql函数,而推荐使用mysqli和PDO函数
  14. 如何在CentOS上创建Kubernetes集群
  15. Linux下安装MySQL数据库、禅道
  16. ArcGIS制图表达Representation-制图表达使用须知
  17. height、clientHeight、scrollHeight、offsetHeight区别
  18. androidstudio身高预测app
  19. 《关键信息基础设施安全保护条例》来了!完善网络安全体系 华云数据构筑云上安全屏障
  20. CAD系统变量(参数)大全

热门文章

  1. MySQL 笔记9 -- PyMySQL
  2. 数据结构与算法(C++)– 堆排(Heap Sort)
  3. 【Python】5种基本但功能非常强大的可视化类型
  4. 强烈推荐几个我常置顶阅读清华、哈工大的平台公众号!
  5. 【机器学习基础】机器学习和深度学习的练习数据
  6. 常见算法的python实现(Github标星75.5k+)
  7. 非常详细的transformer笔记,包括XLNet, MT-DNN, ERNIE, ERNIE2, RoBERTa
  8. 统计学习方法第五章作业:ID3/C4.5算法分类决策树、平方误差二叉回归树代码实现
  9. 《网易智企技术合辑》正式发布
  10. 互联网1分钟 | 0321 小米上线“朕惊视频”;依图医疗与华为联合发布智能医疗云...