Flask 烧瓶渲染图像(和数据)
我有一个非常简单的博客网站,由Flask和peewee orm支持。仅限(降价)帖子和图片。图像包含图像文件(显然)、标题和简要说明。我希望能够添加一个过滤器或标签或其他东西,并基本上在我的帖子中添加一些标记,比如Flask 烧瓶渲染图像(和数据),flask,jinja2,Flask,Jinja2,我有一个非常简单的博客网站,由Flask和peewee orm支持。仅限(降价)帖子和图片。图像包含图像文件(显然)、标题和简要说明。我希望能够添加一个过滤器或标签或其他东西,并基本上在我的帖子中添加一些标记,比如{{img.id | 3},并让它在div中呈现带有id=3的图像,以及标题和描述?对于Jinja2,您可以添加自己的过滤器。过滤器可以获取参数 如果模板中已有具有链接属性的图像对象,则最好使用此属性 如果您对此图像有特殊的路由,最好使用带有指定参数的url\u。如果它有许多参数,您始
{{img.id | 3}
,并让它在div
中呈现带有id=3
的图像,以及标题和描述?对于Jinja2,您可以添加自己的过滤器。过滤器可以获取参数
如果模板中已有具有链接属性的图像对象,则最好使用此属性
如果您对此图像有特殊的路由,最好使用带有指定参数的
url\u。如果它有许多参数,您始终可以添加自定义筛选器。对于Jinja2,您可以使用添加自己的筛选器。过滤器可以获取参数
如果模板中已有具有链接属性的图像对象,则最好使用此属性
如果您对此图像有特殊的路由,最好使用带有指定参数的url\u。如果它有许多参数,您总是可以添加自定义过滤器。您可以使用宏和Python函数来实现这一点
首先,添加一个全局模板
@app.template_global()
def get_image(id):
# not sure if this is the way to do it with peewee
return Image.select().where(Image.id == id).get()
这样,您可以调用{{get_image(id=3)}}
并获取图像对象。当然,它仍然不能解决你的问题
要按您想要的方式生成HTML,请创建一个Jinja2宏来生成HTML块
{% macro img(id) %}
{% set obj = get_image(id) %} {# here I'm calling the template global function #}
<img src="{{ obj.url }}" />
<span class="title">{{ obj.title }}</span>
<span class="description">{{ obj.description }}</span>
{% endmacro %}
{%macro-img(id)%}
{%set obj=get_image(id)%}{{#这里我调用模板全局函数#}
{{obj.title}}
{{obj.description}}
{%endmacro%}
现在,您可以调用{{img(id=3)}
甚至{{img(3)}}
从img
宏打印HTML
在这里,我假设您的对象具有url
、title
和description
。如果你有一个路径来为你的图像服务,也许你想要的是类似于url\u的('some\u route',id=id)
而不是{{obj.url}
当然,您可以从myget\u image
函数提供HTML,甚至可以从my宏查询您的数据库,但这样我就把关注点分开了。您可以使用宏和Python函数来实现这一点
首先,添加一个全局模板
@app.template_global()
def get_image(id):
# not sure if this is the way to do it with peewee
return Image.select().where(Image.id == id).get()
这样,您可以调用{{get_image(id=3)}}
并获取图像对象。当然,它仍然不能解决你的问题
要按您想要的方式生成HTML,请创建一个Jinja2宏来生成HTML块
{% macro img(id) %}
{% set obj = get_image(id) %} {# here I'm calling the template global function #}
<img src="{{ obj.url }}" />
<span class="title">{{ obj.title }}</span>
<span class="description">{{ obj.description }}</span>
{% endmacro %}
{%macro-img(id)%}
{%set obj=get_image(id)%}{{#这里我调用模板全局函数#}
{{obj.title}}
{{obj.description}}
{%endmacro%}
现在,您可以调用{{img(id=3)}
甚至{{img(3)}}
从img
宏打印HTML
在这里,我假设您的对象具有url
、title
和description
。如果你有一个路径来为你的图像服务,也许你想要的是类似于url\u的('some\u route',id=id)
而不是{{obj.url}
当然,您可以从我的get\u image
函数中提供HTML,甚至可以从我的宏中查询您的数据库,但这样我就可以分离关注点。正是我所需要的。谢谢,先生。我不能用这个代码显示图像。“3.jpg”是否必须位于该位置?这正是我所需要的。谢谢,先生。我不能用这个代码显示图像。是否“3.jpg”必须位于该位置?