关于django的模板

模板

问题

如何向请求者返回一个漂亮的页面呢?

肯定需要用到html、css,如果想要更炫的效果还要加入js,问题来了,这么一堆字段串全都写到视图中,作为HttpResponse()的参数吗?这样定义就太麻烦了吧,因为定义字符串是不会出任何效果和错误的,如果有一个专门定义前端页面的地方就好了。

解决问题的技术来了:模板

在Django中,将前端的内容定义在模板中,然后再把模板交给视图调用,各种漂亮、炫酷的效果就出现了。

创建模板

为应用booktest下的视图index创建模板index.html,目录结构如下图:

设置查找模板的路径:打开test1/settings.py文件,设置TEMPLATES的DIRS值

'DIRS': [os.path.join(BASE_DIR, 'templates')],

定义模板

打开templtes/booktest/index.html文件,定义代码如下:

<html>
<head><title>图书列表</title>
</head>
<body>
<h1>{{title}}</h1>
{%for i in list%}
{{i}}<br>
{%endfor%}
</body>
</html>

在模板中输出变量语法如下,变量可能是从视图中传递过来的,也可能是在模板中定义的。

{{变量名}}

在模板中编写代码段语法如下:

{%代码段%}

视图调用模板

调用模板分为三步骤:

  • 1.找到模板
  • 2.定义上下文
  • 3.渲染模板

打开booktst/views.py文件,调用上面定义的模板文件

from django.http import HttpResponse
from django.template import loader,RequestContextdef index(request):# 1.获取模板template=loader.get_template('booktest/index.html')# 2.定义上下文context=RequestContext(request,{'title':'图书列表','list':range(10)})# 3.渲染模板return HttpResponse(template.render(context))

打开浏览器刷新页面,显示效果如下图:

视图调用模板简写

视图调用模板都要执行以上三部分,于是Django提供了一个函数render封装了以上代码。 方法render包含3个参数:

  • 第一个参数为request对象
  • 第二个参数为模板文件路径
  • 第三个参数为字典,表示向模板中传递的上下文数据

打开booktst/views.py文件,调用render的代码如下:

from django.shortcuts import renderdef index(request):context={'title':'图书列表','list':range(10)}return render(request,'booktest/index.html',context)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/456706.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Hbase简介及常用命令相关知识总结

文章目录目录前言&#xff1a;1.Hbase简介1.1、什么是Hbase1.2、与传统数据库的对比1.3、Hbase集群中的角色2、Hbase数据模型3、Hbase命令总结&#xff1a;目录 前言&#xff1a; 对于Hbase来说&#xff0c;由于其是基于列的数据库&#xff0c;所以比传统的数据库快许多&…

Django中模型类 属性-学习笔记

定义属性 Django根据属性的类型确定以下信息&#xff1a; 当前选择的数据库支持字段的类型渲染管理表单时使用的默认html控件在管理站点最低限度的验证 django会为表创建自动增长的主键列&#xff0c;每个模型只能有一个主键列&#xff0c;如果使用选项设置某属性为主键列后d…

Angular Redux

Angular Redux 转载于:https://www.cnblogs.com/skating/p/6185878.html

AtomicInteger相关类

在java6以后我们不但接触到了Lock相关的锁&#xff0c;也接触到了很多更加乐观的原子修改操作&#xff0c;也就是在修改时我们只需要保证它的那个瞬间是安全的即可&#xff0c;经过相应的包装后可以再处理对象的并发修改&#xff0c;以及并发中的ABA问题&#xff0c;本文讲述At…

Storm入门简介

目录前言&#xff1a;1、Storm简介2、Storm与Hadoop的区别3、Storm核心组件4、Storm编程模型5、流式计算一般架构图&#xff08;重要&#xff09;总结&#xff1a; 目录 前言&#xff1a; 在介绍Storm之前&#xff0c;先介绍下离线计算。 离线计算&#xff1a;批量获取数据…

项目完成

完成示例项目 现在还需要的代码包括三个方面&#xff0c;三个方面顺序不分先后。 1.定义视图2.定义URLconf3.定义模板 定义视图 编写booktest/views.py文件如下&#xff1a; from django.shortcuts import render from booktest.models import BookInfo#首页&#xff0c;展…

前端模板预编译技术

什么是前端模板预编译 前端模板预编译通过预编译技术让前端模板突破浏览器限制&#xff0c;实现后端模板一样的同步“文件”加载能力。它采用目录来组织维护前端模板&#xff0c;从而让前端模板实现工程化管理&#xff0c;最终保证前端模板在复杂单页 web 应用下的可维护性。同…

Python如何生成windows可执行的exe文件

打包工具 pyinstaller 安装pyinstaller 如果你的网络稳定&#xff0c;通常直接使用下面的命令安装即可&#xff1a; pip install pyinstaller 当然了&#xff0c;你也可以下载pyinstaller源码包&#xff0c;然后进入包目录执行下面的命令&#xff0c;同样可以安装&#xff…

招商银行信用卡中心华泰证券暑期实习软开笔试小结

白菜自动化小硕一枚&#xff0c;18届&#xff0c;下学期就正式要找工作了&#xff0c;没有实习经验&#xff0c;感觉心慌慌。现在学校里已经开始各种提前招实习&#xff0c;内推了&#xff0c;so暑假想提前试试水&#xff0c;投一投暑期实习。 看到心水的单位就投一投&#xff…

理想的程序猿

出处 | http://guoze.me 最近看到的一篇不错的文章&#xff0c;分享一下。 我算是靠坑蒙拐骗进了程序员的门&#xff0c;然后一路狂奔。26岁之前几乎没有任何写代码的经验&#xff0c;研究生毕业却意外选择了一家不可能提供培训的初创公司&#xff0c;在每日担忧公司倒闭、害…

node08-express

目录&#xff1a;node01-创建服务器 node02-util node03-events node04-buffer node05-fs node06-path node07-http node08-express node09-cookie express模块&#xff1a; 1 /*2 * express是一个应用框架3 * 1、路由4 * 2、中间件5 * 3、模板引擎6 * */7 8 var express requ…

【python】1. 两数之和

给定一个整数数组 nums 和一个目标值 target&#xff0c;请你在该数组中找出和为目标值的那 两个 整数&#xff0c;并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;你不能重复利用这个数组中同样的元素。 示例: 给定 nums [2, 7, 11, 15], t…

The user specified as a definer (#39;root#39;@#39;%#39;) does not exist

&#xfeff;&#xfeff;通常是因为root用户对全局host无訪问权限。因此仅仅要给root用户加入一个訪问权限就可以。解决的方法&#xff1a; 登陆mysql 。运行 mysql -u root -pPasswd mysql >grant all privileges on *.* to root"%" identified by "Passwd…

Java基础常见笔试题总结

以下是自己总结的一些Java常见的基础知识题&#xff0c;答案仅供参考&#xff0c;如有异议请指出。一直保持更新状态。 1.什么是Java虚拟机&#xff1f;为什么Java被称作是“平台无关的编程语言”&#xff1f; Java虚拟机是一个可以执行Java字节码的虚拟机进程。Java源文件被编…

ThreadLocal的练习代码

场景: 有三个小孩儿,买了一个变形金刚玩具(Transformer).... 三个小孩都争着玩这个玩具....没有一个人可以玩... 第一种方式:每个人各玩一会.... 第二种方式:再买两个玩具,一个人玩一个. 每个小孩都当成一个线程.三个小孩就有三个线程. Child.java 2 3 import java.util.Random…

nginx+uwsgi部署Django

本篇文章主要介绍了解决nginxuwsgi部署Django的所有问题(小结)&#xff0c;小编觉得挺不错的&#xff0c;现在分享给大家&#xff0c;也给大家做个参考。一起跟随小编过来看看吧 最近&#xff0c;自己暑假写的小项目也算完毕了&#xff0c;想着投放到自己云服务器上&#xff0…

$(document).scrollTop()与$(window).scrollTop()

$(document).scrollTop() 获取垂直滚动的距离 即当前滚动的地方的窗口顶端到整个页面顶端的距离 要获取顶端 只需要获取到scrollTop()0的时候 就是顶端了 要获取底端 只要获取$(document).scrollTop()>(document).height()−(window).height() 就可以知道已经…

各种机器学习开源项目精选TOP30

8800个机器学习开源项目为你精选TOP30&#xff01; 授权自AI科技大本营&#xff08;ID: rgznai100) 本文共图文结合&#xff0c;建议阅读5分钟。 本文为大家带来了30个广受好评的机器学习开源项目。 最近&#xff0c;Mybridge发布了一篇文章&#xff0c;对比了过去一年中机…

Python中is与==的使用区别详解

>>> a 1000 >>> b 1000 >>> print(id(a),id(b)) 2689566689904 2689566688880 >>> a ,b 1000,1000 >>> print(id(a),id(b)) 2689566689968 2689566689968 一行执行的用一个id地址 分行执行用两个地址

解决:Please specify a different SDK name--PyCharm报错

这个问题出现的原因是因为PyCharm中存在相同名字的虚拟环境变量。 本人的出错原因是&#xff0c;一直使用PyCharm的默认设置来建立工程&#xff0c;所以每个工程都建立了自己独立的虚拟环境。 我个人删除了一些工程后&#xff0c;又建立相同名字的工程。所以才会出现存在相同…