0

我有一个用 Perl(Simple Hello world)编写的后端程序。我是 Django 的新手。

我想与 Django 交互这个 helloworld.pl,动作应该是这样的,当我点击登录按钮时,它必须处理 helloworld.pl 文件并在页面上显示 Helloworld。

4

1 回答 1

2

详细解释可以参考我的博客>>

http://www.easyaslinux.com/tutorials/devops/how-to-run-execute-any-script-python-perl-ruby-bash-etc-from-django-views/

我建议你使用 Subprocess 模块的 Popen 方法。您的 shell 脚本可以作为系统命令与 Subprocess 一起执行。

这里有一点帮助。

你的views.py应该是这样的。

from subprocess import Popen, PIPE, STDOUT
from django.http import HttpResponse

def main_function(request):
    if request.method == 'POST':
            command = ["perl","your_script_path.pl"]
            try:
                    process = Popen(command, stdout=PIPE, stderr=STDOUT)
                    output = process.stdout.read()
                    exitstatus = process.poll()
                    if (exitstatus==0):
                            result = {"status": "Success", "output":str(output)}
                    else:
                            result = {"status": "Failed", "output":str(output)}

            except Exception as e:
                    result =  {"status": "failed", "output":str(e)}

            html = "<html><body>Script status: %s \n Output: %s</body></html>" %(result['status'],result['output'])
            return HttpResponse(html)

在这个例子中,脚本的stderr和stdout保存在变量' output '中,脚本的退出代码保存在变量' exitstatus '中。

配置您的urls.py以调用视图函数“ main_function ”。

url(r'^the_url_to_run_the_script$', main_function)

现在您可以通过调用http://server_url/the_url_to_run_the_script来运行脚本

于 2018-11-15T13:50:38.270 回答