要将Python变量发送到JavaScript,可以通过多种方式实现,具体取决于你的应用架构。以下是几种常见的方法:
如果你使用的是Flask或Django这样的Web框架,可以直接在HTML模板中嵌入Python变量。
from flask import Flask, render_template_string
app = Flask(__name__)
@app.route('/')
def index():
python_var = "Hello from Python!"
return render_template_string('''
<script>
var jsVar = "{{ python_var }}";
console.log(jsVar);
</script>
''', python_var=python_var)
if __name__ == '__main__':
app.run()
# views.py
from django.shortcuts import render
def index(request):
python_var = "Hello from Python!"
return render(request, 'index.html', {'python_var': python_var})
<!-- index.html -->
<script>
var jsVar = "{{ python_var }}";
console.log(jsVar);
</script>
你可以使用AJAX从Python后端获取数据。
from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/get_data')
def get_data():
python_var = "Hello from Python!"
return jsonify(python_var=python_var)
if __name__ == '__main__':
app.run()
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$.getJSON("/get_data", function(data) {
var jsVar = data.python_var;
console.log(jsVar);
});
});
</script>
对于实时应用,可以使用WebSockets进行双向通信。
websockets
库):import asyncio
import websockets
async def send_data(websocket, path):
python_var = "Hello from Python!"
await websocket.send(python_var)
start_server = websockets.serve(send_data, 'localhost', 8765)
asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()
<script>
let ws = new WebSocket("ws://localhost:8765");
ws.onmessage = function(event) {
var jsVar = event.data;
console.log(jsVar);
};
</script>
CGI(Common Gateway Interface)是一种标准协议,用于Web服务器与外部程序(如Python脚本)之间的通信。如果你的Python脚本是通过CGI运行的,那么它可以处理HTTP请求并生成动态内容。
#!/usr/bin/env python3
import cgi
print("Content-Type: text/html")
print()
print("<html><body>")
print("<script>")
print("var jsVar = \"Hello from Python CGI!\";")
print("console.log(jsVar);")
print("</script>")
print("</body></html>")
将这个脚本放在Web服务器的CGI目录中,并配置服务器以执行CGI脚本。
选择哪种方法取决于你的具体需求和应用架构。
没有搜到相关的沙龙