仅使用 javascript 或 django 调用 python 脚本
Call a python script using only javascript or django
我正在使用 splunk
及其仅适用于 javascript 和 Django 的框架。
我想打开一个外部文件并对其进行编辑,但是使用 javascript 是不可能的,而且我不确定是否使用 Django。如果有人知道,请告诉我怎么做。
所以,我想我可以从 javascript 或 Django 调用外部脚本,例如 python,它打开我的文件进行编辑,并将结果发送到我的 javascript页。
要编辑的文件存储在与我的 javascript 页面不同的子文件夹中,但它们都在同一个 splunk_app 文件夹中:
比如
home/splunk/apps/name/django_template/file_java.js
home/splunk/apps/name/django_template/script_that_edit.py
home/splunk/apps/name/lookup/file_to_edit.csv
谢谢
Splunk 建立在 django 网络框架之上。您要做的是在服务器端执行代码。为此,您需要编写自己的视图
- 使用子进程
执行脚本python文件
- 将您的代码嵌入视图
在 vanilla django 中,假设您已将地址路由到 urls.py 中的正确视图,您的 views.py 函数应如下所示:https://docs.djangoproject.com/en/1.7/topics/http/views/
from django.shortcuts import render ## function to return a response and render a html tempalte
def myView(request):
results = {} ## a dictionary to store your results/can be an array as well
## your function here and store your data in results
with open('file.csv') as f:
...
...
return render(request, 'template.html', results )
## you will be returning a javascript object call results
在您的模板中,您可以通过 django 模板语法访问它们
{% for data in results %}
<p>{{ data }}</p>
或者您可以将其存储在变量中
var data = {{ results|safe }}
或者,splunk 提供了一些用于执行自定义视图的绑定。你可以看看http://dev.splunk.com/view/SP-CAAAEMP
原则上是一样的。 运行 函数中的代码,return 将其作为字典。
@render_to('your_app_name:pythondemo.html')
@login_required
def pythondemo_view(request):
file_data = ''
with open('file.csv') as f:
for line in f :
file_data += line
return file_data ##
这次您不需要 return 渲染,因为 splunk 装饰器会为您完成 @render_to
要执行子流程,请查看 http://pymotw.com/2/subprocess/
您可能 运行 遇到文件 read/write/execution 权限问题,因此我强烈建议您将代码放在请求中。
无论哪种方式,因为它是一个 python 脚本,您可以将您的代码包装在一个函数中,然后导入它。例如,
在yourscripts.py
#!/usr/bin/env python
def myFunction():
return 1 + 1
并在您的 view.py 中执行:
from youscripts import myFunction
如果您需要更多帮助,请告诉我。您可能需要相应地调整代码。如果要调用外部 python 脚本,请执行子进程命令
感谢您的帮助,我正在尝试使用 splunk 绑定,所以我已经获取了三个文件:urls、views 和 mypage.html
所以我添加了 url:
url(r'^mypage/$', 'mynewapp.views.myview', name='mypage'),
渲染函数:
@render_to('mynewapp:mypage.html')
@login_required
def myview(request):
with open(csvfile, "r+") as lines:
for line in lines:
file_data += line
service = request.service
return file_data
和 mypage.html django 代码:
{% for data in file_data %}
{{ data }}
{% endfor %}
但是有一点不对,但是我不明白是什么。
我将使用字典而不是 file_Data,但是如何使用来自 mypage.html 的子进程执行我的脚本 python 文件?
非常感谢您的帮助。
我正在使用 splunk
及其仅适用于 javascript 和 Django 的框架。
我想打开一个外部文件并对其进行编辑,但是使用 javascript 是不可能的,而且我不确定是否使用 Django。如果有人知道,请告诉我怎么做。
所以,我想我可以从 javascript 或 Django 调用外部脚本,例如 python,它打开我的文件进行编辑,并将结果发送到我的 javascript页。
要编辑的文件存储在与我的 javascript 页面不同的子文件夹中,但它们都在同一个 splunk_app 文件夹中:
比如
home/splunk/apps/name/django_template/file_java.js
home/splunk/apps/name/django_template/script_that_edit.py
home/splunk/apps/name/lookup/file_to_edit.csv
谢谢
Splunk 建立在 django 网络框架之上。您要做的是在服务器端执行代码。为此,您需要编写自己的视图
- 使用子进程 执行脚本python文件
- 将您的代码嵌入视图
在 vanilla django 中,假设您已将地址路由到 urls.py 中的正确视图,您的 views.py 函数应如下所示:https://docs.djangoproject.com/en/1.7/topics/http/views/
from django.shortcuts import render ## function to return a response and render a html tempalte
def myView(request):
results = {} ## a dictionary to store your results/can be an array as well
## your function here and store your data in results
with open('file.csv') as f:
...
...
return render(request, 'template.html', results )
## you will be returning a javascript object call results
在您的模板中,您可以通过 django 模板语法访问它们
{% for data in results %}
<p>{{ data }}</p>
或者您可以将其存储在变量中
var data = {{ results|safe }}
或者,splunk 提供了一些用于执行自定义视图的绑定。你可以看看http://dev.splunk.com/view/SP-CAAAEMP
原则上是一样的。 运行 函数中的代码,return 将其作为字典。
@render_to('your_app_name:pythondemo.html')
@login_required
def pythondemo_view(request):
file_data = ''
with open('file.csv') as f:
for line in f :
file_data += line
return file_data ##
这次您不需要 return 渲染,因为 splunk 装饰器会为您完成 @render_to
要执行子流程,请查看 http://pymotw.com/2/subprocess/
您可能 运行 遇到文件 read/write/execution 权限问题,因此我强烈建议您将代码放在请求中。
无论哪种方式,因为它是一个 python 脚本,您可以将您的代码包装在一个函数中,然后导入它。例如,
在yourscripts.py
#!/usr/bin/env python
def myFunction():
return 1 + 1
并在您的 view.py 中执行:
from youscripts import myFunction
如果您需要更多帮助,请告诉我。您可能需要相应地调整代码。如果要调用外部 python 脚本,请执行子进程命令
感谢您的帮助,我正在尝试使用 splunk 绑定,所以我已经获取了三个文件:urls、views 和 mypage.html 所以我添加了 url:
url(r'^mypage/$', 'mynewapp.views.myview', name='mypage'),
渲染函数:
@render_to('mynewapp:mypage.html')
@login_required
def myview(request):
with open(csvfile, "r+") as lines:
for line in lines:
file_data += line
service = request.service
return file_data
和 mypage.html django 代码:
{% for data in file_data %}
{{ data }}
{% endfor %}
但是有一点不对,但是我不明白是什么。
我将使用字典而不是 file_Data,但是如何使用来自 mypage.html 的子进程执行我的脚本 python 文件?
非常感谢您的帮助。