簡體   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