it-swarm.cn

如何在网页中运行python脚本

我是python的新手。只知道什么是python。我创建了以下代码(在python IDLE中):

print "Hi Welcome to Python test page\n";
print "Now it will show a calculation";
print "30+2="; print 30+2;

然后,我将此页面保存在本地主机中为index.py

我使用 http://localhost/index.py 运行脚本

但是它没有显示已执行的python脚本。而是将上面的代码显示为HTML。问题出在哪儿?请有人告诉我如何在网页中运行python吗?

51
Haren Sarma

为了显示您的代码,您需要执行以下操作:

首先,需要有一台处理HTTP请求的服务器。目前,您只是使用Firefox在本地硬盘上打开文件。需要诸如Apache之类的服务器或类似的服务器。

其次,假设您现在拥有一个服务器来提供文件,那么您还需要一些将代码解释为该服务器的Python代码。对于Python用户,如今的解决方案是mod_wsgi。但是对于更简单的情况,您可以坚持使用CGI(更多信息 此处 ),但是如果您想轻松地生成网页,则应该使用现有的Python网络框架,例如Django。

进行此设置可能很麻烦,因此请做好准备。

42
Uku Loskit

正如其他人指出的那样,有许多用于Python的Web框架。

但是,看到您刚开始使用Python时,一个简单的CGI脚本可能更合适:

  1. 将脚本重命名为index.cgi。您还需要执行chmod +x index.cgi来赋予其执行特权。

  2. 在文件开头添加以下两行:

#!/ usr/bin/python 
 print('Content-type:text/html\r\n\r')

此后,Python代码应像在终端中一样运行,除了输出将发送到浏览器。工作正常后,可以使用 cgi模块 从浏览器获取数据。

注意:这假设您的网络服务器正在运行Linux。对于Windows,可以使用#!/Python26/python

21
jpa

使用Python中的 flask 库,您可以实现这一目标。请记住将HTML页面存储到运行python脚本的名为“模板”的文件夹中。

所以你的文件夹看起来像

  1. 模板(包含HTML文件的文件夹)
  2. 您的python脚本

这是python脚本的一个小例子。这只是检查抄袭。

from flask import Flask
from flask import request
from flask import render_template
import stringComparison

app = Flask(__name__)

@app.route('/')
def my_form():
    return render_template("my-form.html") # this should be the name of your html file

@app.route('/', methods=['POST'])
def my_form_post():
    text1 = request.form['text1']
    text2 = request.form['text2']
    plagiarismPercent = stringComparison.extremelySimplePlagiarismChecker(text1,text2)
    if plagiarismPercent > 50 :
        return "<h1>Plagiarism Detected !</h1>"
    else :
        return "<h1>No Plagiarism Detected !</h1>"

if __== '__main__':
    app.run()

这是使用的HTML文件的小模板

<!DOCTYPE html>
<html lang="en">
<body>
    <h1>Enter the texts to be compared</h1>
    <form action="." method="POST">
        <input type="text" name="text1">
        <input type="text" name="text2">
        <input type="submit" name="my-form" value="Check !">
    </form>
</body>
</html>

这是一个很小的小方法,通过它您可以完成比较两个字符串的简单任务,并且可以轻松更改以适应您的要求

11
Ash Upadhyay

如果您使用的是自己的计算机,请安装一个名为XAMPP的软件(或WAMPP都可以)。这基本上是一个仅在您的计算机上运行的网站服务器。然后,安装后,转到xampp文件夹,然后双击htdocs文件夹。现在,您需要做的是创建一个html文件(我将其称为runpython.html)。 (请记住也将python文件移动到htdocs中)

将此添加到您的html正文中(并根据需要输入)

<form action = "file_name.py" method = "POST">
   <input type = "submit" value = "Run the Program!!!">
</form>

现在,在python文件中,我们基本上将要打印HTML代码。

#We will need a comment here depending on your server. It is basically telling the server where your python.exe is in order to interpret the language. The server is too lazy to do it itself.

    import cgitb
    import cgi

    cgitb.enable() #This will show any errors on your webpage

    inputs = cgi.FieldStorage() #REMEMBER: We do not have inputs, simply a button to run the program. In order to get inputs, give each one a name and call it by inputs['insert_name']

    print "Content-type: text/html" #We are using HTML, so we need to tell the server

    print #Just do it because it is in the tutorial :P

    print "<title> MyPythonWebpage </title>"

    print "Whatever you would like to print goes here, preferably in between tags to make it look Nice"
9
ytpillai

好吧,OP并没有说服务器或客户端,所以我就把这留在这里,以防像我这样的人正在寻找客户端:

http://skulpt.org/using.html

Skulpt是Python的实现,可在客户端运行。非常有趣,不需要插件,只需一个简单的JS。

0
Marco

根据您当前的要求,这可以工作:

    def start_html():
        return '<html>'

    def end_html():
        return '</html>'

    def print_html(text):
        text = str(text)
        text = text.replace('\n', '<br>')
        return '<p>' + str(text) + '</p>'
if __== '__main__':
        webpage_data =  start_html()
        webpage_data += print_html("Hi Welcome to Python test page\n")
        webpage_data += fd.write(print_html("Now it will show a calculation"))
        webpage_data += print_html("30+2=")
        webpage_data += print_html(30+2)
        webpage_data += end_html()
        with open('index.html', 'w') as fd: fd.write(webpage_data)

打开index.html,您将看到想要的

0
satyakam shashwat