繁体   English   中英

如何使用 Django 在 HTML 按钮按下时执行 file.py?

[英]How to execute file.py on HTML button press using Django?

我的目标是单击我的 Django 网页上的 HTML 按钮,这将执行本地 python 脚本。

我正在创建一个本地 Web 应用程序作为项目的接口。 这不会被托管,只会在我的本地机器上运行。 我的项目使用 python 脚本运行(它执行针对我的项目的大量测试)。 我所需要的只是在我的 Web 界面中有一个按钮来在我的机器上执行这个脚本。

我有一个模板 index.html 整个网页所在的位置。 我想我可能需要在按下按钮时调用某种形式的视图函数?

如何通过 django html 按钮执行 python 代码?

这个问题暗示:

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 应用程序的经验非常有限,这只是一个简单的界面,带有一些用于运行测试的按钮)

您将要尝试做的是在单击按钮时提交表单。 然后,您可以从脚本中导入要运行的函数并在您的视图中调用它们。 然后您重定向到同一页面。

我希望这有帮助!

索引.html

<form method="post">
    {% csrf_token %}
    <button type="submit" name="run_script">Run script</button>
</form>

视图.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)

添加到上面的答案。 您可以完全在不同的视图中运行该函数:

<form method="post" action="{% url 'app:view/function' %}"> {% csrf_token %} <button class="btn btn-danger btn-block btn-round">Perform task</button> </form>

并渲染您想要的任何模板(相同的模板将执行任务,但似乎什么也没发生)。 如果您已经有一个“POST”表单处理程序,这很方便。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM