我的服务器上有一个Python脚本和一个JS。在python脚本中,我想将变量的值设置为我的.js文件中某个函数的输出。
这是可能的,如果是这样的话,我们会怎么做呢?
谢谢!
答案 0 :(得分:4)
作为Macha提出的替代方法(Ajax查询),您还可以动态创建Javascript文件。
加载页面时,会加载javascript。在您的网页中是
形式的javascript网址<SCRIPT LANGUAGE="JAVASCRIPT" SRC="mycode.js" TYPE="TEXT/JAVASCRIPT">
现在的诀窍是让服务器不提供静态文件“mycode.js”,而是输出例如mycode.py。您的标记看起来像
<SCRIPT LANGUAGE="JAVASCRIPT" SRC="mycode.py" TYPE="TEXT/JAVASCRIPT">
并且python脚本可能看起来像(简化):
var_value = "whatever you want the variable to be"
jsfile = open("myscript.js", "rb")
for line in jsfile:
print line.replace("$MYVAR$", var_value)
jsfile.close()
简而言之,您拥有当前的js文件,但您将其用作python脚本的模板。您可以使用replace替换变量及其值。
它可能不是最优雅的解决方案,但它应该有效,而且并不是那么难以理解。
不要忘记您的服务器应该知道如何处理python脚本:)
答案 1 :(得分:1)
这是不可能的,因为Javascript通常在客户端运行,而Python在服务器端运行。
如果是需要在客户端运行的代码,请让它向具有您需要的结果的python脚本发送AJAX请求。如果它不需要在客户端运行,我建议你用Python重写它。
答案 2 :(得分:1)
您只需从python脚本中打印javascript块...并在外部脚本中使用的那些块中设置变量。
<script language="javascript">var myvalue="data";</script>
使用simplejson你甚至可以打印数组和类似的东西。
只需确保javascript文件中的代码位于加载整个页面后调用的函数中,或者在页面末尾加载javascript文件。
答案 3 :(得分:0)
如果您正在使用webpack,在不加载任何http请求的情况下在python和javascript文件之间共享变量的一种方法是以yaml或json等可序列化格式存储变量,并使用yaml loader在前端解析它。
const.yaml
DAY_MON: MON
DAYS:
- MON
- TUE
MAP_CONTENT_TYPE_TO_EXTENSION:
image/gif: .gif
image/jpg: .jpg
const.py
import yaml
globals().update(yaml.load(open('./const.yaml')))
print DAY_MON
print DAYS
print MAP_CONTENT_TYPE_TO_EXTENSION
# MON
# ['MON', 'TUE']
# { 'image/gif': '.gif', 'image/jpg': '.jpg' }
安装加载程序以解析yaml npm install yaml-loader
const.js
import data from "json-loader!yaml-loader!./const.yaml";
data.ANOTHER_VARIABLE = "SOME_VAR";
export default data;
read.js
import constants from './const.js';
console.log(constants.ANOTHER_VARIABLE);
console.log(constants.LISTING_TYPE_BRAND);
console.log(constants.DAYS);
console.log(constants.MAP_CONTENT_TYPE_TO_EXTENSION);
// SOME_VAR
// MON
// ['MON', 'TUE']
// { 'image/gif': '.gif', 'image/jpg': '.jpg' }