在Flask路由中如何同时返回两个不同类型的内容?
错误原因说明
你尝试的几种写法出错的核心逻辑分别是:
- 用逗号分隔两个返回值:Flask会把逗号后的值识别为响应状态码、响应头等附加配置,不会输出到响应体中
- 用分号分隔内容:Python中分号是语句分隔符,分号后的代码不会作为return的返回值
- 直接写
{{ named }}:双大括号是Jinja2模板的专属语法,你直接返回普通字符串不会触发模板渲染,所以会原样输出 - 用
and连接两个值:Python的逻辑运算符and会返回最后一个为真的对象,所以只会输出后面的图片标签
正确实现方案
将变量和HTML标签拼接为同一个字符串返回即可,两种常用写法:
写法1:f-string拼接(Python3.6+推荐,最简洁)
from flask import Flask import random app = Flask(__name__) @app.route("/") def index(): name = ('qwerty', 'uiopa', 'sdfgh', 'jklzx', 'cvbnm') named = random.choice(name) return f"{named}<img src='https://picsum.photos/800/450'>"
写法2:加号拼接
return named + "<img src='https://picsum.photos/800/450'>"
内容的提问来源于stack exchange,提问作者Bon Wattersen
相关产品推荐
相关产品推荐

