我的目标是单击Django网页上的HTML按钮,这将执行本地python脚本。
我正在创建一个本地Web应用程序作为项目的接口。它不会被托管,并且将始终只在我的本地计算机上运行。我的项目使用python脚本运行(该脚本执行了许多针对我的项目的测试)。我只需要在Web界面中单击一个按钮即可在计算机上执行此脚本。
我有一个模板index.html,整个网页都位于该模板中。我想我可能需要在按下按钮时调用某种形式的views函数?
How to execute python code by django html button?
此问题提示:
def index(request):
if request.method == 'GET':
return render(request, 'yourapp/index.html', {'output': ''})
elif request.method == 'POST':
py_obj = mycode.test_code(10)
return render(request, 'yourapp/output.html', {'output': py_obj.a})
我只是作为测试尝试了此操作,但是转到URL(位于适当的views.py中)时没有任何反应:
def runtest(request):
print("Hello World")
Popen(['gnome-terminal', '-e', 'echo "Hello World"'], stdout=PIPE)
return
但是我不太了解这是否达到了我所需要的,我正在努力理解答案的含义。
在Django框架中的什么地方可以按下按钮时指定对本地python脚本的调用?
(我对Web应用程序的经验非常有限,这只是意味着它是一个简单的界面,带有一些用于运行测试的按钮)
答案 0 :(得分:3)
在上面添加答案。您可以在其他视图中完全运行该功能:
<form method="post" action="{% url 'app:view/function' %}">
{% csrf_token %}
<button class="btn btn-danger btn-block btn-round">Perform task</button>
</form>
并渲染所需的任何模板(相同的模板将执行任务,但似乎什么也没发生)。如果您已经有一个“ POST”表单处理程序,这将很方便。
答案 1 :(得分:1)
您要尝试做的是单击按钮时提交表单。然后,您可以从脚本中导入要运行的函数,然后在视图中调用它们。然后,您重定向到同一页面。
我希望这会有所帮助!
index.html
<form method="post">
{% csrf_token %}
<button type="submit" name="run_script">Run script</button>
</form>
views.py
if request.method == 'POST' and 'run_script' in request.POST:
# import function to run
from path_to_script import function_to_run
# call function
function_to_run()
# return user to required page
return HttpResponseRedirect(reverse(app_name:view_name)