我编写了一段代码,该字符串与字符串中是否包含任何模式的文本都匹配。someExtension,就我而言,它将是字符串中的fileName.png,将其转换为img标签并显示在HTML文件上使用python和flask。让我们以示例字符串为例: “此程序的输出是什么?e.png” 代码与e.png匹配,然后将其替换为
"<br><img src="{{url_for('static', filename='pics/e.png')}}" /><br>"
图像e.png放在静态文件夹内的文件夹pics中。 如果即使将该字符串添加到Markup(),也将其推入flask变量中,它不会渲染图像,但会显示以下输出。
为什么会这样?有什么方法可以显示图像e.png?
我的代码是:
import re
from flask import Flask, Markup, render_template
app = Flask(__name__)
def rep(x):
text = re.findall(r'\w+[.]\w+', x)
for i in text:
b ="<img src=\"{{ url_for('static',filename='pics/"+i+"')}}\">"
x=x.replace(i,b)
return x
@app.route('/')
def home():
a = "What is the output of this program? e.png"
a = rep(a)
return render_template('new.html',var=Markup(a))
if __name__ == '__main__':
app.run(debug=True, host='localhost', port=8032)
HTML文件是
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{{var}}
</body>
</html>
答案 0 :(得分:0)
问题在于,您传递给模板的值是一个字符串,即使您插入的字符串是用{{括号格式化的,flask也不解释那些值。请注意,如果您查看投放的html,它实际上包含字符串'url_for'...
您甚至也没有从flask导入url_for函数,因此无论如何都不会起作用。
解决方案:
import re
from flask import Flask, url_for, Markup, render_template
app = Flask(__name__)
def rep(x):
text = re.findall(r'\w+[.]\w+', x)
for i in text:
b ="<img src='" + url_for('static', filename='pics/'+i) + "'>"
x=x.replace(i,b)
return x
@app.route('/')
def home():
a = "What is the output of this program? e.png"
a = rep(a)
return render_template('new.html', var=Markup(a))
@app.route('/static/<path:path>')
def static_file(path):
return send_from_directory('static', path)
if __name__ == '__main__':
app.run(debug=True, host='localhost', port=8032)
html文件可以保持不变。此解决方案