在HTML文件的<script>标记内运行python代码

时间:2018-02-01 12:29:25

标签: javascript python html

(server.js)我有以下代码来运行我的服务器 -

&#xA;&#xA;
  var http = require('http' );&#xA; var fs = require('fs');&#xA; var path = require('path');&#xA;&#xA; http.createServer(function(request,response){& #xA; console.log('request starting ...');&#xA;&#xA; var filePath ='。'+ request.url;&#xA; if(filePath =='。/')& #xA; filePath ='。/ public / index.html';&#xA;&#xA; var extname = path.extname(filePath);&#xA; var contentType ='text / html';&#xA; switch(extname){&#xA; case'.js':&#xA; contentType ='text / javascript';&#xA; break;&#xA; case'.json':&#xA; contentType =' application / json';&#xA; break;&#xA;}&#xA;&#xA; fs.readFile(filePath,function(error,content){&#xA; if(error){&#xA; if(error.code =='ENOENT'){&#xA; fs.readFile('./ 404.html',function(error,content){&#xA; response.writeHead(200,{'Content-Type ': C ontentType});&#xA; response.end(content,'utf-8');&#xA; });&#XA; }&#XA;别的{&#xA; response.writeHead(500);&#XA; response.end('500 Internal Server error:'+ error.code +'.. \ n');&#xA;到Response.End(); &#XA; }&#XA; }&#XA;别的{&#xA; response.writeHead(200,{'Content-Type':contentType});&#xA; response.end(content,'utf-8');&#xA; }&#XA; });&#xA;&#xA;})。listen(8000);&#xA; console.log('服务器运行在http:// localhost:8000 /');&#xA;  
&#xA;&#xA;

(index.html)我公共目录中的index.html文件如下:

&#xA;&#xA ;
 &lt;!doctype html&gt;&#xA;&#xA;&lt; html&gt;&#xA;&lt; head&gt;&#xA; &lt; meta charset =“utf-8”&gt;&#xA; &lt; script type =“text / javascript”src =“./ jquery.js”&gt;&lt; / script&gt;&#xA; &lt; script type =“text / javascript”src =“./ algebra.js”&gt;&lt; / script&gt;&#xA; &lt; script type =“text / javascript”src =“./ math.js”&gt;&lt; / script&gt; &#XA;&#XA; &LT;脚本&GT;&#XA; //更多代码...&#xA; function runPythonCode(x,y){&#xA; //处理python文件并获得结果&#xA; }&#XA; runPythonCode(2,3);&#xA; &LT; /脚本&GT;&#XA; &lt; / body&gt;&#xA;&lt; / html&gt;&#xA;  
&#xA;&#xA;

runPythonCode 函数中的上述代码中我想将变量 x y 传递给我的python代码并使用 x y 进行一些处理并且想要值返回到javascript。

&#xA;&#xA;

我只是在index.html中的脚本标记中尝试这样,只是为了检查python脚本是否正在运行 -

&#xA;&#xA;
  text =“hello”&#xA; $ .ajax({&#xA; type:“GET”,&#xA; url:“。/ app.py”,&#xA; // data:{param:text}&#xA; success:function(响应){&#xA; console.log(响应);&#xA;},&#xA;错误:函数(错误){&#xA; console.log(错误);&#xA;}&#xA ;})&#xA;  
&#xA;&#xA;

我的 aap.py python代码 -

&#xA;& #xA;
 导入csv&#xA;来自numpy导入矩阵&#xA;&#xA; def main():&#xA; x = 2&#xA;返回x&#xA; if __name__ ==“__ main __”:&#xA; x = main()&#xA;  
&#xA;&#xA;

但是在运行此代码后,我只是在控制台中获取整个python代码。&#xA;我是什么在这做错了?如何在js中运行python文件?

&#xA;

3 个答案:

答案 0 :(得分:2)

有一个名为brython的工具,它允许您在html文件的脚本标记内添加python 3代码。

但是,我认为它可以通过将您的python代码转换为javascript并让浏览器使用来实现。这是一个python脚本的示例:

<script type="text/python">
"""Code for the clock"""

import time
import math

from browser import document
import browser.timer

sin, cos = math.sin, math.cos
width, height = 250, 250 # canvas dimensions
ray = 100 # clock ray

background = "#111"
digits = "#fff"
border = "#333"

def needle(angle, r1, r2, color="#000000"):
    """Draw a needle at specified angle in specified color.
    r1 and r2 are percentages of clock ray.
    """
    x1 = width / 2 - ray * cos(angle) * r1
    y1 = height / 2 - ray * sin(angle) * r1
    x2 = width / 2 + ray * cos(angle) * r2
    y2 = height / 2 + ray * sin(angle) * r2
    ctx.beginPath()
    ctx.strokeStyle = "#fff"
    ctx.moveTo(x1, y1)
    ctx.lineTo(x2, y2)
    ctx.stroke()
</script>

答案 1 :(得分:1)

浏览器支持的唯一客户端脚本语言是JavaScript。 Python不适合网络。

如果您有兴趣在服务器端使用python:https://www.djangoproject.com/

答案 2 :(得分:0)

您的node.js HTTP服务器配置为不执行python脚本;因此,它们以纯文本形式发送给呼叫者。

在node.js服务器中,您可以使用.bs-tooltip-top .arrow, .bs-tooltip-bottom .arrow { margin-left: -6px; } .bs-tooltip-left .arrow, .bs-tooltip-right .arrow { margin-top: -6px; } 模块执行python,如下所示:How to call python script from NodeJs

然而,仍然会被警告!永远不要执行来自或可能被您的网站访问者更改的代码。