django变量使用-在模板中使用视图函数中的变量
DTL语言,即django template language
第一次使用时,需要修改项目的setting.py文件,将其中TEMPLATES中的DIRS修改为os.path.join(BASE_DIR, 'templates'),BASE_DIR在setting.py文件中定义为BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))),表示项目所在的文件夹
使用render时,系统会默认从setting.py文件的TEMPLATES中的DIRS所指的路径寻找渲染文件
如果DIRS为空,而APP_DIRS为True,系统则会从项目的各个app的templates目录下去寻找渲染文件,前提是app已经添加到setting.py文件的INSTALLED_APPS中。
templates的查找顺序:DIRS、APP_DIRS
#项目的setting.py中templates的最初配置
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'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',
],
},
},
] #INSTALLED_APPS的最初配置
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
template_intro_demo
渲染模板的两种方式
1.需要导入from django.template.loader import render_to_string,最后HttpResponse返回一个render_to_string的值
例如html=render_to_string('index.html') return HttpResponse(html)
2.直接通过render返回,render返回的第一个参数为request,第二个为要渲染的文件名称,一般使用这种方式
return render(request,'index.html')
在模板中使用变量,有两种方法,但在html模板中必须将变量放在{{ 变量 }}中
①将变量存放在字典中,在render中通过context=字典的形式接收变量,然后在模板中直接通过字典的键值引用
#视图函数
from django.shortcuts import render
def index(request):
con={'username':'ahahhah','age':25,'hobby':'basketball'} #定义变量,变量只能为字典形式
return render(request,'index.html',context=con) #render只能通过context接收变量 #渲染文件
……
<body>
{{ username }} #直接使用字典的键获取键值,不需要使用context.键否则无法获取到值
{{ age }}
{{ hobby }}
</body>
……
②变量以任何形式存在,在render中通过{'接收变量的名称':'变量名称'}的形式接收变量,然后在模板中通过接收变量的名称(如果为列表、元组、字典、对象等,需通过下标访问)引用
#视图函数
from django.shortcuts import render
def index(request):
con=['ahahhah',25,'basketball'] #定义变量,可以是数字、字符串、列表、元组、字典、对象等
return render(request,'index.html',{'person':con}) #render通过字典形式接收变量 #渲染文件
……
<body>
{{ person.0 }} #以render中的字典的键来表示变量,并通过索引下标访问值
{{ person.1 }}
{{ person.2 }}
</body>
……
1.在模板中使用视图函数中的变量,需要将变量放置到{{变量名}}中
2.如果在render中通过字典的形式接收变量并且变量为列表、元组、字典、对象等,那么想要访问变量的值,需要通过变量.属性来访问,不能通过python下标的方式访问,如访问列表的第3个元素l.2
3.获取字典所有的key可使用d.keys,但是如果字典中有一个key的名称也为keys,那么d.keys就会获取到keys对应的键值,因此不建议在字典中定义key为字典的属性,例如keys、items、values
django变量使用-在模板中使用视图函数中的变量的更多相关文章
- django系列8.5--使用装饰器(视图函数中)实现用户登录状态检验
views.py def session_auth(fn): def inner(request,*args,**kwargs): status = request.session.get('sess ...
- django之子应用中开发视图函数
一:修改视图函数 报错:ImportError: No module named 'django' 原因是:pycharm中的解释器未选择虚拟环境里面的python3 from django.shor ...
- django目录下的路由系统和视图函数
一.Django路由系统(url) 1.什么是路由系统 路由系统的本质是URL模式以及要为该URL模式调用的视图函数之间的一个映射表即不同的url路径对应的不同的函数,该路由系统是存放在全局配置文件u ...
- flask 在视图函数中验证表单
在视图函数中验证表单 因为现在的basic_form视图同时接受两种类型的请求:GET请求和POST请求.所以我们要根据请求方法的不同执行不同的代码.具体来说,首先是实例化表单,如果是GET请求,就渲 ...
- Flask从入门到精通之在视图函数中处理表单
在新版hello.py 中,视图函数index() 不仅要渲染表单,还要接收表单中的数据.更新后的index() 视图函数如下: @app.route('/') def index(): name = ...
- R语言:利用caret包中的dummyVars函数进行虚拟变量处理
dummyVars函数:dummyVars creates a full set of dummy variables (i.e. less than full rank parameterizati ...
- 下拉框select->option中如何把参数传到视图函数中去
例子: <select name="p_id" id=""> {% for p in permissions %} <option value ...
- JavaScript 中的匿名函数((function() {})();)与变量的作用域
以前都是直接用前端框架Bootstrap,突然想看看Javascript,发现javascript是个非常有趣的东西,这里把刚碰到的一个小问题的理解做下笔录(废话不多说,上代码). /** * Exa ...
- iOS 中的视图函数 init initwithnib viewDidLoad viewWillAppear的总结
我要总结的函数主要是这几个: UIView *view-如果view还没有被初始化的话,getter方法会先调用[self loadView],如果getter或者setter方法被重写了,子类中的g ...
随机推荐
- [LeetCode] 329. Longest Increasing Path in a Matrix_Hard tag: Dynamic Programming, DFS, Memoization
Given an integer matrix, find the length of the longest increasing path. From each cell, you can eit ...
- iOS库
https://medium.com/app-coder-io/33-ios-open-source-libraries-that-will-dominate-2017-4762cf3ce449#.i ...
- cocos2dx 3.x版本搭建Mac环境工程(创建一个新的C++工程)百分百可行
首先第一篇,想学cocos2dx第一步就是搭建环境,第一步搭建不了环境,创建不了工程那一切都是扯淡. 说到mac下安装cocos2d-x想到的模式就是xcode+cocos2d-x.因为我本身就是一个 ...
- mybatis多表关联查询之resultMap单个对象
resultMap的n+1方式实现多表查询(多对一) 实体类 创建班级类(Clazz)和学生类(Student),并在Student中添加一个Clazz类型的属性,用于表示学生的班级信息. mappe ...
- 003-SqlHelper.cs/Web.config
<?xml version="1.0" encoding="utf-8"?> <!-- 有关如何配置 ASP.NET 应用程序的详细信息,请访 ...
- XML系列之--对电文格式XML的简单操作(三)
前两章介绍了关于Linq创建.解析SOAP格式的XML,在实际运用中,可能会对xml进行一些其它的操作,比如基础的增删该查,而操作对象首先需要获取对象,针对于DOM操作来说,Linq确实方便了不少,如 ...
- 【Hadoop UI学习】Hue
环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk8 zookeeper-3.4.11 Hue是一个开源的Apac ...
- 【Hadoop学习之十三】MapReduce案例分析五-ItemCF
环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk8 hadoop-3.1.1 推荐系统——协同过滤(Collab ...
- 在Eclipse下配置算法(第四版)运行环境
第一步:配置Eclipse运行环境 Eclipse运行环境配置过程是很简单的,用过Eclipse进行java开发或学习的同学应该都很熟悉这个过程了. 配置过程: (1)系统环境:Windows7 64 ...
- Linux基础命令---iptables-save
iptables-save iptables-save指令可以将内核中当前的iptables配置导出到标准输出.通过IO重定向功能来定向输出到文件. 此命令的适用范围:RedHat.RHEL.Ubun ...