Django之侧边栏抽取(inclusion_tag)

这篇具有很好参考价值的文章主要介绍了Django之侧边栏抽取(inclusion_tag)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

include和inclusion_tag的区别:

        1、include:固定的,不能动态变化


        2、inclusion_tag:返回一个动态的html片段 ----- 编写方式和自定义过滤器差不多

【1】编写步骤1

【1】在settings中得INSTALLED_APPS配置当前app,不然django无法找到自定义的标签


【2】在app中创建templatetags包(包名只能叫templatetags)


【3】在包下创建任意的py文件


【4】导入,实例化得到对象,对象名字必须是register,不能是其它

        

from django import template

register = template.Library()

【5】使用装饰器

from django import template
from BLOG import models
from django.db.models import Count
from django.db.models.functions import TruncMonth
# 侧边栏抽取
register = template.Library()

# 把返回的数据----渲染在left.html中-------html片段
# 把这个html片段放在你想放在的位置
@register.inclusion_tag('left.html', name='left')
def left(username):
    user = models.UserInfo.objects.filter(username=username).first()
    res_category = models.Article.objects.filter(blog_id=user.blog.id).values('category__id').annotate(
        article_count=Count('id')).values('category__id', 'category__name', 'article_count')
    res_tag = models.Article.objects.filter(blog_id=user.blog.id).values('tag__id').annotate(
        article_count=Count('id')).values('tag__id', 'tag__name', 'article_count')
    res_date = models.Article.objects.filter(blog_id=user.blog.id).annotate(create_date=TruncMonth('create_time')).values(
        'create_date').annotate(article_count=Count('id')).values('create_date', 'article_count')
    return {'user':user,'res_category':res_category,'res_tag':res_tag,'res_date':res_date}

【6】html片段,(left.html)文件中的内容

    <div class="panel panel-primary">
        <div class="panel-heading">
            <h3 class="panel-title">我的标签</h3>
        </div>
        <div class="panel-body">
            {% for tag in res_tag %}
                <p>
                    <a href="/{{ user.username }}/tag/{{ tag.tag__id }}.html">{{ tag.tag__name }}({{ tag.article_count }})</a>
                </p>
            {% endfor %}

        </div>
    </div>
    <div class="panel panel-success">
        <div class="panel-heading">
            <h3 class="panel-title">随笔分类</h3>
        </div>
        <div class="panel-body">
            {% for category in res_category %}
                <p>
                    <a href="/{{ user.username }}/category/{{ category.category__id }}.html">{{ category.category__name }}({{ category.article_count }})</a>
                </p>
                <hr>
            {% endfor %}


        </div>
    </div>
    <div class="panel panel-info">
        <div class="panel-heading">
            <h3 class="panel-title">随笔档案</h3>
        </div>
        <div class="panel-body">
            {% for date in res_date %}
                <p><a href="/{{ user.username }}/archive/{{ date.create_date|date:'Y-m' }}.html">{{ date.create_date|date:'Y-m' }}({{ date.article_count }})</a></p>
            {% endfor %}

        </div>
    </div>

【7】在模板中使用(在想用的位置load即可)文章来源地址https://www.toymoban.com/news/detail-758773.html

{% load comon_left %}

{% left user.username %}

到了这里,关于Django之侧边栏抽取(inclusion_tag)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • windows解决python安装django架构没有django-admin命令

    目录 一.尝试安装与配置 1.直接pip命令安装 2.用pycharm测试 3.官网下包安装 二.解决 1.找到django安装的路径 2.配置系统变量 3.测试创建项目 3.1.执行访问页面 3.2.解决 3.3.继续测试 4.pycharm打开     新建项目测试    注:发现没有django这个框架选项,后面发现这个功能只有专业版才

    2024年02月06日
    浏览(35)
  • 一周学会Django5 Python Web开发-Django5路由定义

    锋哥原创的Python Web开发 Django5视频教程: 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计22条视频,包括:2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~、第2讲 Django5安装、

    2024年02月19日
    浏览(32)
  • python - Django创建项目

    根目录下运行命令:    python manage.py runserver 直接使用 Pycharm 创建项目 django-admin startproject mysite     这样就会在当前目录下创建一个叫做 mysite 的Django项目。     可以看到Django自动帮我们创建了一个mysite文件夹,这是项目的根目录。在mysite根目录中,又有一个mysite目录,

    2024年04月11日
    浏览(32)
  • python-0004-django站点

    django自带站点用来操作增删改查 项目setting.py 在子应用的models.py中创建,如下: 在pycharm的终端或虚拟环境执行 在pycharm的终端或虚拟环境执行 此时会在项目的db.sqlite3中生成信息 在子应用的admin.py中注册,示例如下: 目的:显示更全的数据 重写model的__str__,如: http://ip:po

    2024年03月15日
    浏览(33)
  • Python Django 详解(基础)

    [File] - [New Project...] - [Django] - 设置 Location 和 解释器 - [create] 固定,不用动的文件:     asgi.py:接收网络请求(异步)     wsgi.py:接收网络请求(同步) 重要,需要经常操作的文件:     urls.py:URL和函数的对应关系     settings.py:项目配置 命令窗口执行命令: python

    2024年02月07日
    浏览(29)
  • Python django开发

    第一步:创建开发环境 mkvirtualenv py2_django 第二步:安装django pip install django==2.2.5   # 选择2.2.5的原因是这个版本是持久维护的 pip list # 查看安装的信息 第三步:start 一个项目,并创建子应用 cd ~/Myproject   # 选择目录 django-admin startproject myweb  # 创建项目 第四步,启动服务端

    2024年02月16日
    浏览(26)
  • [Python]Django简介

    系列文章目录 [Python]目录 视频及资料和课件 链接:https://pan.baidu.com/s/1LCv_qyWslwB-MYw56fjbDg?pwd=1234 提取码:1234 官方网站 GitHub源码 Django,发音为 [dʒæŋɡəʊ] 。 Django的主要目的是简便、快速的开发数据库驱动的网站。 Django强调代码复用,多个组件可以很方便的以\\\"插件\\\"形式服务

    2024年02月12日
    浏览(30)
  • Python--Django--说明

    Django 是基于python 的 Web 开发框架. nsbp;   Web开发指的是开发基于B/S 架构, 通过前后端的配合, 将后台服务器上的数据在浏览器上展现给前台用户的应用. nsbp;   在早期, 没有Web框架的时候, 使用 Python CGI 脚本显示数据库中的数据.     Web框架致力于解决一些共同的问题, 为

    2024年04月16日
    浏览(26)
  • 浅谈Python中的Django框架

    Django框架在Python开发很重要,Django框架是一个web框架,且是一个后端框架程序,它不是服务器,需要注意Django框架帮我们封装了很多的组件,帮助我们实现各种功能,具有很强的扩展性。 Django是Python社区两大受欢迎的Web框架之一。 凭借功能强大的脚手架和诸多开箱即用的组件,用

    2024年02月07日
    浏览(32)
  • python 创建Django项目基础

    等待项目安装完毕 创建好Django项目后,我们就可以运行了 使用命令 在创建的文件中写入以下方法 注意:request用来接收url的必须要有 测试访问 1. 创建一个文件夹 templates,如果有则不需要建 2. 创建一个html文件 3.在views添加方法,让其访问这个html 4. 添加路由 访问: 这里,基

    2024年02月08日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包