django 前后端不分离,多个模板有相同的数据渲染,用 inclusion_tag 少写代码
2023-03-07 09:46:11 时间
django 前后端不分离,多个页面有相同的数据显示,按照普通做法:
可以在每个 view 里面查询一次给到模板。
这种做法,代码重复量太高,修改时极不方便。为此找到 django 包含标签 功能可以解决 前端页面有相同数据显示而只写一次查询代码的方法。
django 的包含标签的功能,个人理解 是把 相同查询的数据块独立出来,做成一个页面,把页面包装成标签,在需要的页面引用标签。
1. 把 相同数据块的模板,写成一个单独的 模板页面
# joyoo\templates\friend_url_show.html
<div class="am-u-sm-12 am-u-md-4- am-u-lg-4">
<h3>常用网站</h3>
<p>
<ul>
{% for item in common_url %}
<li><a href="{{ item.site_link }}">{{ item.site_name }}</a></li>
{% endfor %}
</ul>
</p>
</div>
<div class="am-u-sm-12 am-u-md-4- am-u-lg-4">
<h3>友情链接 <a href="{% url "blog:friendUrlAdd" %}">+</a></h3>
<p>
<ul>
{% for item in friends_url %}
<li><a href="{{ item.site_link }}">{{ item.site_name }}</a></li>
{% endfor %}
</ul>
</p>
</div>
2. 独立数据块,做成标签
# joyoo\blog\templatetags\my_tags.py
- app 目录下新建 templatetags 目录,包含 __init__.py 文件
- 在 templatetags 下新建自己的 my_tags.py,py 文件名模板引入时用到
from django import template
from blog.models import FriendsURL
from django.core.cache import cache
from joyoo.settings import CACHE_TIMEOUT_ARTICLE # 缓存时间
register = template.Library()
# friend_url_show.html 数据块模板
@register.inclusion_tag("friend_url_show.html")
def get_friends_url():
"""
获取友情链接
:return:
"""
friends_url = cache.get("friends_url")
if not friends_url:
friends_url = FriendsURL.objects.filter(show_status=True).filter(category="1")
cache.set("friends_url", friends_url, CACHE_TIMEOUT_ARTICLE)
common_url = cache.get("common_url")
if not common_url:
common_url = FriendsURL.objects.filter(show_status=True).filter(category="2")
cache.set("common_url", common_url, CACHE_TIMEOUT_ARTICLE)
return {"friends_url": friends_url, "common_url": common_url}
3. 在需要该数据的模板页面引用自定义的标签
# joyoo\templates\lw-index-noslider.html
{# 模板抬头就引入 自定义标签库 my_tags,就是那个 py 文件名称 #}
{% load my_tags %}
{# 在需要的地方引用 标签,就是 my_tags.py 里面的函数名称 #}
{% get_friends_url %}
相关文章
- 数据孤岛是业务效率的无声杀手
- 2023展望:新的一年将给大数据分析领域带来什么?
- 阿里云ADB基于Hudi构建Lakehouse的实践
- 大数据在医疗保健领域的使用案例
- 微软增加说明:KB5021751 更新扫描已经 / 即将过时 Office 过程中不会触碰用户隐私
- 2022 Gartner全球云数据库管理系统魔力象限发布 腾讯云数据库入选
- 场景化、重实操,分享一个实时数仓实践案例
- Arctic的湖仓一体践行之路
- 分布式计算MapReduce究竟是怎么一回事?
- 淘系数据模型治理优秀实践
- 大数据分析对医疗保健的影响
- 当我们说大数据Hadoop,究竟在说什么?
- 2022年及以后大数据的五个发展趋势
- 网易严选离线数仓治理实践
- 2023 年数据治理趋势
- 一份“靠谱”的年度经营计划,你学会了吗?
- 漫谈对大数据的思考
- 测试一下,读懂数据的能力,你有吗?
- 用艺术的眼光探索数据之美
- 聊聊数据分析成果如何落地