如何清理这个 jinja2 和/或布尔表达式

2024-02-23

{% block content %}
    {% for blog_dict in blogs|sort(reverse=True,attribute='date') if ((not file_name_filter) or blog_dict.filename==file_name_filter) and ((not category_filter) or blog_dict.category==category_filter) %}
        <div id="post{{blog_dict.post_number}}-{{blog_dict.link_name}}">
            {{blog_dict.date.strftime("%Y-%m-%d")}}
            <a href="/posts/{{blog_dict.filename}}"><h1>{{blog_dict.heading}}</h1></a>
            <!-- Place this tag where you want the +1 button to render -->
            <div class="g-plusone" data-href="/posts/{{blog_dict.filename}}"></div>
            {{blog_dict.post|safe}}
        </div>
        <br />
        <br />
        <br />
        <img src="/images/page_divider.gif"><br />
    {% endfor %}
{% endblock %}

正如你所看到的,表达式变得越来越混乱:

{% for blog_dict in blogs|sort(reverse=True,attribute='date') if ((not file_name_filter) or blog_dict.filename==file_name_filter) and ((not category_filter) or blog_dict.category==category_filter) %}

我尝试的另一个选项是在循环中放置两个嵌套的 if 语句来处理两个过滤器,但随后嵌套变得很大。

什么是最优雅的?


正如约翰·凯斯在评论中提到的,我添加了一个过滤器:

def blog_filter(blogs, file_name_filter, category_filter):
    if file_name_filter:
        blogs = (d for d in blogs if d['filename'] == file_name_filter)
    if category_filter:
        blogs = (d for d in blogs if d['category'] == category_filter)
    return blogs

这被添加到 jinja2environment.filters 字典中

myconfig = {}
myconfig['webapp2_extras.jinja2'] =  {'template_path': ['templates','blog_posts'],
                                      'filters': {'blog_filter': blog_filter}}

app = webapp2.WSGIApplication(_routes,
    debug=True,
    config = myconfig)

表达式变为:

{% for blog_dict in blogs|blog_filter(file_name_filter,category_filter)|sort(reverse=True,attribute='date') %}

我还可以在其他地方使用此过滤器,例如我的侧面菜单:

{% for month, blog_dicts in blogs|blog_filter(False, category_filter)|groupby('date.month')|sort(reverse=True,attribute='grouper') %}

注意我使用 jinja2 包装器(from webapp2_extras import jinja2) 它是我的基本处理程序中的缓存属性

class BaseHandler(webapp2.RequestHandler):
    @webapp2.cached_property
    def jinja2(self):
        return jinja2.get_jinja2(app=self.app)

    def render_template(self, filename, **kwargs):
        #call self.response.write(self.jinja2.render_template(..)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何清理这个 jinja2 和/或布尔表达式 的相关文章

  • 2d 图像点和 3d 网格之间的交点

    Given 网格 源相机 我有内在和外在参数 图像坐标 2d Output 3D 点 是从相机中心发出的光线穿过图像平面上的 2d 点与网格的交点 我试图找到网格上的 3d 点 This is the process From Multip
  • Flask中使用的路由装饰器是如何工作的

    我熟悉 Python 装饰器的基础知识 但是我不明白这个用于 Flask 路由的特定装饰器是如何工作的 以下是 Flask 网站上的代码片段 from flask import Flask escape request app Flask
  • 尝试从网页Python和BeautifulSoup获取编码

    我试图从网页检索字符集 这会一直改变 目前我使用 beautifulSoup 来解析页面 然后从标题中提取字符集 这工作正常 直到我遇到一个网站 到目前为止 我的代码以及与其他页面一起使用的代码是 def get encoding soup
  • Python re无限执行

    我正在尝试执行这段代码 import re pattern r w w s re compiled re compile pattern results re compiled search COPRO HORIZON 2000 HOR p
  • 指示电子邮件的类型

    我有以下自动化程序 它将电子邮件发送给我自己 并添加了特定的链接 import win32com client as win32 import easygui import tkinter as to from tkinter import
  • 使用 Python 3 动态插入到 sqlite

    我想使用 sqlite 写入多个表 但我不想提前手动指定查询 有数十种可能的排列 例如 def insert sqlite tablename data list global dbc dbc execute insert into tab
  • python array(10,1) 和 array(10,) 之间的区别

    我正在尝试将 MNIST 数据集加载到数组中 当我使用 X train y train X test y test mnist load data 我得到一个数组 y test 10000 但我希望它的形状为 10000 1 数组 1000
  • python 中的 h2o 框架子集

    如何在 python 中对 h2o 框架进行子集化 如果 x 是一个 df 并且 Origin 是一个变量 那么在 pandas 中我们通常可以通过以下方式进行子集化 x x Origin AAF 但使用 h2o 框架会出现以下错误 H2O
  • 更改QLineEdit的ClearButton图标

    我想在Windows 10 1909 64位 上的Python 3 8和PyQt5 5 15 0 上更改我的QLineEdit的ClearButton图标 稍后我想在Linux上运行代码 我尝试应用此处找到的代码 如何在 QLineEdit
  • PIL.Image.open和tf.image.decode_jpeg返回值的区别

    我使用 PIL Image open 和 tf image decode jpeg 将图像文件解析为数组 但发现PIL Image open 中的像素值与tf image decode jpeg不一样 为什么会出现这种情况 Thanks 代
  • Python 2 的 `exceptions` 模块在 Python3 中丢失了,它的内容到哪里去了?

    一位朋友提到 对于 Python 2 假设您在命令行上的路径环境变量中有它 pydoc exceptions 非常有用 知道它应该可以为他每周节省几分钟的网络查找时间 我自己每周都会用谷歌搜索一次例外层次结构 所以这对我来说也是一个有用的提
  • App Engine 实体到字典

    将 google app engine 实体 在 python 中 复制到字典对象的好方法是什么 我正在使用 db Expando 对象 所有属性均为扩展属性 Thanks 有一个名为foo尝试 foo dict
  • 使用 suds SOAP 库进行 HTTP 身份验证的奇怪行为

    我有一个正在运行的 python 程序 它使用 suds 通过 SOAP 获取大量数据 Web服务是通过分页功能实现的 这样我就可以抓取nnn每个 fetch 调用的行并获取下一个nnn与后续的电话 如果我使用如下代码向 HTTP 服务器进
  • Discord.py 嵌入中禁用按钮/冻结按钮

    I m trying to make a replica of this bot in which when I press any of the buttons below it shows a dropdown menu and you
  • 确定分割形状几何体的“左”侧和“右”侧

    我的问题是 我怎样才能确定哪一个Aside and Bside的侧面已经分割的旋转矩形几何体 http nbviewer jupyter org urls dl dropbox com s ll3mchnx0jwzjnf determine
  • 在matlab中,如何读取python pickle文件?

    在 python 中 我生成了一个 p 数据文件 pickle dump allData open myallData p wb 现在我想在Matlab中读取myallData p 我的Matlab安装在Windows 8下 其中没有Pyt
  • django jet 中的自定义徽标

    我目前正在尝试对 django 管理面板的皮肤进行一些定制 以使其更符合我们的品牌 目前我们使用 django jet 来美化管理面板 django jet 可以自定义 css html 吗 所有评论都说我应该更改一些 html 文件 但我
  • 如何绘制更大的边界框和仅裁剪边界框文本 Python Opencv

    我正在使用 easyocr 来检测图像中的文本 该方法给出输出边界框 输入图像如下所示 Image 1 Image 2 使用下面的代码获得输出图像 But I want to draw a Single Bigger bounding bo
  • 如何使用xlwt设置文本颜色

    我无法找到有关如何设置文本颜色的文档 在 xlwt 中如何完成以下操作 style xlwt XFStyle bold font xlwt Font font bold True style font font background col
  • Python 中的 Unix cat 函数 (cat * > merged.txt)? [复制]

    这个问题在这里已经有答案了 一旦建立了目录 有没有办法在Python中使用Unix中的cat函数或类似的函数 我想将 files 1 3 合并到 merged txt 我通常会在 Unix 中找到该目录 然后运行 cat gt merged

随机推荐

  • 使用 Bottle 将列表从 python 传递到 js 的最佳方法是什么?

    我使用 Bottle 作为 Web 服务器 需要将 python 列表传递给 javascript 当我只执行 myList 时 Bottle 会对列表中的字符串转义单引号并将其显示为 039 反过来 JS 对它所得到的结果也不是很满意 我
  • 嵌入式二进制验证实用程序错误

    从昨天开始 Xcode 在尝试在我的 iPhone 上运行我的 WatchKit 应用程序时做了一些愚蠢的事情 它给了我错误 嵌入式二进制验证实用程序错误 错误 警告 是一个目录 它不是很有帮助 而且似乎在抱怨我的 Watchkit 扩展目
  • 如何在maven配置中正确指定jcenter存储库?

    在 Gradle 中 我只需添加 repositories jcenter 在 maven pom xml 中执行相同操作的最简单且正确的方法是什么 或者我在哪里可以获得 jcenter 存储库的正确 url 您必须像下面这样定义setti
  • (何时)m2crypto 会移植到 Python3 吗?

    m2crypto 是否正在向 Python3 移植 我将开始一个需要跨平台 跨语言加密的新玩具项目 m2crypto 看起来像是可行的方法 但我宁愿使用 Py3 以避免必须在任何地方显式转换为 UTF8 该库的移植是否正在进行中 代码位于h
  • 升级到 OS X Mavericks 后 Python 出现奇怪问题

    将我的 OS X Lion 升级到 Mavericks 后 我遇到了一些奇怪的问题 起初 它给了我分段故障 or 总线错误 经过一番搜索后 我发现它与readline图书馆 该解决方案描述为bugs python org curl O ht
  • alpine 包 py-pip 丢失

    我尝试使用 Docker compose 文件在我的 alpine 中安装 python pip 但出现以下错误 ERROR unsatisfiable constraints py pip missing required by worl
  • React 中的类变量与 ES6

    这个问题可能已经在其他地方得到了回答 但在标记为重复之前 请帮助我解决这个问题 我指的是使用react和d3的以下codepen https codepen io swizec pen oYNvpQ https codepen io swi
  • 滚动查看并刷新内容

    我使用以下用户界面 父级相对布局parentLayout尺寸为 800x600 宽 x 高 第二个相对布局childLayout 它是父布局的子布局 它的尺寸为 800x1000 即它大于父布局 parentLayout addView c
  • 在 xampp windows 中安装 Yaml

    我正在尝试安装YAML http www yaml org in XAMPP windows 64 bit 从以下位置下载了 dll 文件http pecl php net package yaml 1 1 1 windows http p
  • 如何使用子进程popen Python [重复]

    这个问题在这里已经有答案了 Since os popen正在被取代subprocess popen 我想知道如何转换 os popen swfdump tmp filename swf d to subprocess popen I tri
  • PHP ini file_get_contents 外部 url

    我使用以下 PHP 函数 file get contents http example com 每当我在某个服务器上执行此操作时 结果都是空的 当我在其他地方执行此操作时 结果就是页面的内容是什么 然而 当我在结果为空的服务器上 在本地使用
  • iOS 启动故事板:如何更改选项卡栏的色调颜色?

    我在做什么 使用 启动故事板 它非常简单 并且包含一个默认的 UITabBarController 我已在启动情节提要以及我的应用程序中将选项卡栏的 tintColor 设置为红色 我使用的是 Xcode 7 iOS 9 什么不起作用 启动
  • 为什么“IN”查询标签在sql存储过程中的成本如此之高?

    如何改善我的性能问题 我有一个带有 IN 的 sql 查询 我猜 IN 会造成一些代价高昂的性能问题 但我需要索引我的 sql 查询吗 Mysql查询 SELECT p ReferencedxxxId FROM Common xxxRefe
  • 插槽算作 Azure 中的 VM 吗?

    我目前有一个通过应用服务免费计划部署到 Azure 的 Web 应用程序 作为上线的一部分 我有兴趣转向使用插槽 这主要是因为它使我能够将新代码部署到暂存中 然后在经过验证后无缝切换 现在 要使用插槽 我知道我需要标准计划 并且该计划至少需
  • 如何通过 Gmail API 发送电子邮件?去

    我正在尝试通过以下方式发送电子邮件谷歌邮箱API https developers google com gmail api v1 reference users messages send using Go http golang org
  • python 导入应该花这么长时间吗?

    对于以下命令 time python test py 在此脚本上 test py import numpy as np from math import import matplotlib pyplot as plt import matp
  • 如何设置$_GET变量

    我如何设置变量 GET函数将能够使用 无需提交表单action GET GET包含在 URL 中传递给脚本的键 值 如果您有以下网址 http www example com test php a 10 b plop Then GET将包含
  • android c2dm编程示例

    我是 Android 应用程序开发新手 我正在使用 c2dm 开发 Android 应用程序 谁能告诉我如何从 c2dm 接收应用程序的注册 ID 请告诉我详细的例子和解释 public class C2dmEx extends Activ
  • 使用 GoogleMaps 时,myLocationEnabled 会在 swift 上更改为 isMyLocationEnabled

    我正在尝试使用谷歌地图 API 来显示用户当前位置 我已经为这个问题苦苦挣扎了好几个星期 代码可以运行 但当我更改模拟器中的位置时 代码不会更新到当前位置 我的代码如下 在查看其他人如何执行此操作后 他们都有 mapView myLocat
  • 如何清理这个 jinja2 和/或布尔表达式

    block content for blog dict in blogs sort reverse True attribute date if not file name filter or blog dict filename file