当前位置: 首页 > 面试题库 >

使用Jinja过滤器创建内容片段

况经纬
2023-03-14
问题内容

我想为我的主页创建内容片段。一个示例帖子看起来像

<p>Your favorite Harry Potter characters enter the Game of Thrones 
universe, and you'll never guess what happens!</p>

<readmore/>

<p>...they all die</p>

在主页上,我只希望<readmore/>显示之前的内容。我在想可以在Jinja过滤器中使用Beautiful Soup来剪掉readmore及其后的所有内容。如果不<readmore/>存在,它应该剪切在第一个换行符或段落末尾。

我怎样才能做到这一点?


问题答案:

只需检查<readmore/>文本中是否存在或其他子字符串,然后在其上拆分,或者在换行符上不拆分该子字符串。

from markupsafe import Markup

@app.template_filter()
def snippet(value):
    for sep in ('<readmore/>', '<br/>', '<br>', '</p>'):
        if sep in value:
            break
    else:
        sep = '\n'

    return Markup(value.split(sep, 1)[0])


 类似资料:
  • 从采集内容中移除掉多余无用内容。 单元素采集场景 列表采集场景 很多时候我们采集回来的内容中会包含一些"杂质",如果只是想要移除或替换内容中的某些关键词,直接用字符串替换函数就可以轻松解决,但往往实际情况没这么简单,下面就是一个典型的例子: $html =<<<STR <div id="content"> <span class="tt">作者:xxx</span>

  • 4.3 创建/使用内容供应器 由于ContentResolver和SQLiteDatabase的接口非常相似,所以常常有个误解,Content Provider与SQLiteDatabase的关系如此密切。 但是,实际上内容供应器只是提供了应用间数据共享的接口,所以需要注意的是它不会影响每种数据保存格式。 为了保存内容供应器中的数据,可以使用SQLiteDatabase,也可以使用其他保存格式,如

  • 写一个你自己的过滤器非常容易:在你的模块中注册一个新的过滤器(可注入的)工厂函数就行了。这个工厂函数必须放回一个新的过滤器函数,这个过滤函数的第一个参数接受的是输入。任何过滤器参数都会被当成附加的参数传递给过滤器。 下面的例子展示了逆转字符串文本。另外,它有条件地将文本大写并填上颜色。 index.html: <!doctype html> <html ng-app="MyReverseModul

  • 4.3.1.4 创建/使用内部内容供应器 内部内容供应器禁止除内部应用以外的应用使用。 下面展示了如何实现内部内容供应器的示例代码。 要点(创建内容供应器): 定义内部签名权限。 需要内部签名权限。 将导出属性显式设置为true。 验证内部签名权限是否由内部应用定义。 验证参数的安全性,即使这是来自内部应用的请求。 由于请求应用是内部的,因此可以返回敏感信息。 导出 APK 时,请使用与请求应用相

  • 问题内容: 我已将此帖子标记为WordPress,但我不能完全确定它是特定于WordPress的,因此我将其发布在StackOverflow而不是WPSE上。 该解决方案不必特定于WordPress,只需使用PHP即可 。 方案 I我经营一个养鱼网站,上面有许多热带鱼和鱼类。 我们的网站围绕我们的个人资料。就像您可能会说的那样,它们是网站的基础。 我希望实现的是,在每个提到另一个物种或词汇表条目的

  • 问题内容: 我正在尝试找出使用TypeScript创建自定义角度过滤器的最佳方法。 我看到的所有代码示例都使用类似以下内容的代码: …可以,但是由于我想将所有过滤器代码分开而显得有些混乱。所以我想知道如何将过滤器声明为一个单独的文件(例如,filters / reverse- filter.ts),这样我就可以创建它: …以与控制器,服务等相同的方式 TS和Angular的文档在地面上似乎很薄,尤