Django渲染模板、路径配置、变量使⽤。
DTL与普通的HTML⽂件的区别:
DTL模板是⼀种带有特殊语法的HTML⽂件,这个HTML⽂件可以被Django编译,可以传递参数进去,实现数据动态化。在编译完成后,⽣成⼀个普通的HTML⽂件,然后发送给客户端。DTL 是 Django Template Language 三个单词的缩写,也就是Django⾃带的模板语⾔。
渲染模板
先在templates⽂件夹下创建html⽂件。
render_to_string:到模板,然后将模板编译后渲染成Python的字符串格式。最后在通过HttpResponse类包装成⼀个HttpResponse 对象返回回去。
在views.py⽂件中编写
plate.loader import render_to_string
from django.http import HttpResponse
def index(request):django前端模板
html = render_to_string("detail.html")
return HttpResponse(html)
最后在urls.py⽂件中,将路径写⼊即可
以上⽅式虽然已经很⽅便了。但是django还提供了⼀个更加简便的⽅式,直接将模板渲染成字符串和包装成 HttpResponse 对象⼀步到位完成。
在views.py⽂件中编写
from django.shortcuts import render
der index(request):
return render(request,'detail.html')
模板查路径配置
模板查路径配置:在项⽬的 settings.py⽂件中。有⼀个TEMPLATES 配置,这个配置包含了模板引擎的配置,模板查路径的配置,模板上下⽂的配置等。模板路径可以在这个地⽅配置。
DIRS:这是⼀个列表,在这个列表中可以存放所有的模板路径,以后在视图中使⽤ render或者render_ to _ string渲染模板的时候,会在这个列表的路径中查模板。
'DIRS':[os.path.join(BASE_DIR, 'templates')]
APP_DIRS:默认为True,这个设置为 True 后,会在"INSTALLED _ APPS"的安装了的 APP下的 templates⽂件加中查模板。
'APP_DIRS': True,
DIRS优先级⾼于APP_DIRS
模板变量的使⽤
模板中可以包含变量, Django在渲染模板的时候,可以传递变量对应的值过去进⾏替换。变量的命名规范和Python⾮常类似,只能是阿拉伯数字和英⽂字符以及下划线的组合,不能出现标点符号等特殊字符。变量需要通过视图函数渲染,视图函数在使⽤render或者
render_to_string的时候可以传递⼀个context 的参数,这个参数是⼀个字典类型。以后在模板中的变量就从这个字典中读取值的。
views.py代码⽰例
def profile(request):
return render(request,'profile.html',context={'username':'张三 '})
profile.html模板代码⽰例
<p>{{username}}</p>
模板中的变量同样也⽀持点(.)的形式。在出现了点的情况,⽐如 person.username,模板是按照以下⽅式进⾏解析的:
views.py⽰例
class Person(object):
def__init__(self,username):
self.username = username
def profile(request):
p = Person('jiajia') #创建⼀个对象
context = {
'person':p
}
return render(request,'profile.html‘,context=context)
html代码⽰例
<html>
...
<body>
{{person.username}} #根据Key来获取
</body>
</html>
传递的⼀个参数是⼀个模型或者是⼀个类。获取属性的话。可以通过点的⽅式
如果person是⼀个字典呢?
views.py⽰例
class Person(object):
def__init__(self,username):
self.username = username
def profile(request):
context = {
'person':{
'username':'jiajia' #person对应的是⼀个字典
}
}
return render(request,'profile.html,context=context)
html代码⽰例
{{person.username}}
注意
如果views.py⽂件是这样的。
context = {
'person':{
'username':'jiajia' #person对应的是⼀个字典
'keys':'abc'
}
}
html⽂件是这样的呢?
{{person.keys}}
返回的是abc,即对应的值。这样是会产⽣歧义的。为了避免产⽣歧义,应该避免在这个字典内写他本⾝的⼀些属性来作为这个键的值!
另外的形式
views.py⽰例
context = {
'person':[
'a', #这⾥是⼀个中括号
'b',
'c'
]
}
如何获取列表属性的第⼀个值a呢?
html代码⽰例
{{person.0}} #通过点(.)索引获取
同理,元组也是这样。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论