gpt4 book ai didi

python - url_for 创建了错误的静态文件夹路径

转载 作者:太空宇宙 更新时间:2023-11-03 20:14:25 24 4
gpt4 key购买 nike

我们的服务器 (xxxx.edu.au:5000) 上运行着一个 Flask 应用程序。但是,我们设置了代理xxxx.edu.au/getseq它将请求转发到 xxxx.edu.au:5000

不幸的是,在浏览器中,现在我们得到 Loading failed for the <script> with source “https://xxxx.edu.au/static/vehicle.js” .

这是 Flask 应用程序结构:

flask
├── getseq.py
├── static
│ └── vehicle.js
└── templates
└── example.html

此处编写的 flask 应用程序:

$ cat getseq.py
from flask import Flask, render_template, request
from wtforms import Form, RadioField, TextAreaField
from wtforms.widgets import TextArea

SECRET_KEY = 'development'

app = Flask(__name__)
app.config.from_object(__name__)
...

@app.route("/getseq/<mrna_id>", methods=['post', 'get'])
def get_sequences(mrna_id):
...
return render_template('example.html', form=form)

@app.route("/getseq/health", methods=['get'])
def health():
response = app.response_class(
status=200,
mimetype='text/html'
)
return response

if __name__ == '__main__':
print("starting...")
app.run(host='0.0.0.0',port=5000,debug=True)

路径vehicle.js在这里定义:

$ cat templates/example.html 
<script type="text/javascript" src="{{url_for('static', filename='vehicle.js')}}"></script>
...

如何更改url_for或者我必须改变getseq.py

提前谢谢您,

最佳答案

如果不重复您的问题,就很难判断是什么导致您的静态 Assets 失败。作为解决方法,您可以在服务器上读取 vehicle.js,对其进行 base64 编码,将其传递到模板上下文中,然后使用以下命令渲染脚本标记:

<script type="text/javascript" src="data:text/javascript;base64,{{ base64_encoded_data }}"></script>

编辑在您的 View 处理程序中:

import base64


@app.route("/getseq/<mrna_id>", methods=['post', 'get'])
def get_sequences(mrna_id):
with open('static/vehicle.js', 'rb') as f:
base64_encoded_data = base64.b64encode(f.read())
return render_template('example.html', form=form, base64_encoded_data=base64_encoded_data)

关于python - url_for 创建了错误的静态文件夹路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58541222/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com