我有一个非常简单的博客网站,由Flask和peewee orm支持。仅限(降价)帖子和图片。图像具有归档的图像文件(显然),标题和简要说明。我想是能够添加过滤或标签什么的,基本上把我的职位像{{ img.id|3 }}
降价,并将它呈现与id=3
图像中的div
,与标题和描述?烧瓶渲染图像(和数据)
1
A
回答
4
您可以使用宏和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 %}
,你可以打电话{{ img(id=3) }}
甚至{{ img(3) }}
从img
宏打印HTML。
这里我假设你的对象是url
,title
和description
。如果您有一条路线来提供图片,也许您想要的内容类似url_for('some_route', id=id)
而不是{{ obj.url }}
。
当然,您可以通过我的get_image
函数来服务HTML,甚至可以从我的宏中查询您的数据库,但这样我分离了一些问题。
1
对于Jinja2,您可以添加自己的筛选器template_filter
。过滤器可以接受参数。
如果您的模板中已经有链接属性的图像对象,那么最好使用此属性。
如果您有此图像的特殊路线,最好使用带指定参数的url_for
。如果它有很多参数,你总是可以添加自定义过滤器。
相关问题
- 1. 烧瓶渲染模板重复HTML
- 2. 渲染html页面/#:id使用烧瓶
- 3. 烧瓶不能渲染变音器
- 4. Python烧瓶渲染变量的文本像render_template
- 5. 烧瓶自定义登录和模板渲染
- 6. 烧瓶:渲染模板和填充HTML表
- 7. 同时渲染一个模板和send_from_directory烧瓶
- 8. 渲染与瓶
- 9. Python烧瓶动态图像
- 10. 烧瓶,图像和服务他们
- 11. Hadoop和3d渲染图像
- 12. 渲染图像
- 13. Gunicorn和烧瓶蓝图
- 14. 从MySQL数据库图像渲染
- 15. web.py和烧瓶
- 16. 烧瓶和python
- 17. 渲染Jinja2的模板而不烧瓶方面
- 18. 如何渲染模板并同时用烧瓶发送文件
- 19. 在烧瓶中渲染模板之后更新Jinja元素
- 20. 模板不能正确渲染通过烧瓶
- 21. 如何使用烧瓶渲染html内容与忍者?
- 22. Python烧瓶忍者 - 渲染动态改变HTML文件
- 23. Python - 使用烧瓶渲染模板时出现404错误
- 24. 烧瓶正在渲染我的html文档的头部两次
- 25. 蟒蛇烧瓶render_template HTML没有正确渲染
- 26. 在烧瓶中渲染模板时发生HTTP 500错误
- 27. 烧瓶数据库问题
- 28. Android-图像渲染
- 29. wicked_pdf图像渲染
- 30. 图像不渲染
正是我所需要的。谢谢你,先生。 – freethrow
我无法使用此代码显示图像。 “3.jpg”是否必须位于该位置? – Gank