【Django 004】利用jinja模板返回动态html内容

前面我们成功实现了url返回html页面,但是返回的都是静态页面。实际生产中往往都是根据后端返回的内容进行动态显示,这一节我们就一起来看看如何通过模板语言jinja来实现动态页面。

我是T型人小付,一位坚持终身学习的互联网从业者。喜欢我的博客欢迎在csdn上关注我,如果有问题欢迎在底下的评论区交流,谢谢

什么是jinja?

jinja是python中被广泛使用的模板引擎,通过在html页面中加入jinja代码,真正在返回给用户的时候将这些jinja代码替换为后端传递过来的内容,而实现动态内容的呈现。

jinja的语法比较多,我们这一节主要是看一下变量替换和for循环,更多的jinja语法可以查看我的另一篇博客《Saltstack入门到精通教程(五):Jinja详解》。saltstack也是基于python的,所以用的也是jinja模板,异曲同工。

变量替换

还是用上一节的新应用Two来举例子。

Two/urls.py中加入路由规则如下,也就是访问ip:port/two/testjinja.html/的url都会交给Two/views.py中的test_jinja函数去处理

path('testjinja.html/', views.test_jinja)

然后去构建一个这个函数,顺便再安利一下pycharm的万能键Alt + Enter,自动帮我们完成函数的定义语法

def test_jinja(request):
    context = {
        'name': 'xiaofu',
        'age': 2,
        'hobby': ['basketball','swimming','photography']
    }
    return render(request,'testjinja.html',context=context)

重点来了!!

跟之前的render函数相比,这里除了html模板名字还加了一个context参数,而传递给这个参数的是一个字典,定义了一个string,一个int,还有一个list。

然后去templates文件夹里面创建一下这个testjinja.html,额外说一下,快速创建两个<li>的快捷键是敲li*2然后按tab

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>jinja</title>
</head>
<body>
<li>name: {{ name }}</li>
<li>age: {{ age }}</li>

</body>
</html>

第二个重点来了!!

两个<li>中用两个大括号报过了一个变量名,这是jinja中显示变量的格式,而且要注意大括号和变量之间有一个空格,不能省略。pycharm支持jinja快捷键,直接敲两个左大括号就能自动生成右大括号和空格。

其余的jinja格式可以通过快捷键Ctrl + j来快速输入,见下面for循环的演示

这样上面context中的nameage两个变量就会在这里显示,如下
1-variable.png

for循环

但是想显示context的第三个参数,也就是一个list,用上面的方法只能在网页中显示一个带中括号的list。如果想要将list的元素单独显示,需要用到jinja中的for循环。

修改jinjatest.html如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>jinja</title>
</head>
<body>
<li>name: {{ name }}</li>
<li>age: {{ age }}</li>
<h2>hobby:</h2>
{% for item in hobby %}
    <li>{{ item }}</li>
{% endfor %}

</body>
</html>

重点又来了!!!

这里用一个for循环对hobby进行循环,和python一样,这里的变量item不需要提前定义,然后用上面显示变量的方法对每个item进行输出。这里直接敲for加上tab就会自动生成for循环结构,不需要自己完整敲出来。

再来看看网页显示,如下
2-for.png

总结

这里只是抛砖引玉,jinja的功能十分强大,而且不仅在Django中有用,Flask中也是有用,更多的jinja语法可以查看我的另一篇博客《Saltstack入门到精通教程(五):Jinja详解》

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值