如何从 Django 中的表单调用 Python 函数?
Posted
技术标签:
【中文标题】如何从 Django 中的表单调用 Python 函数?【英文标题】:How can I call a Python function from a form in Django? 【发布时间】:2019-05-09 02:14:30 【问题描述】:我正在尝试从我的一个模板中的表单调用函数来计算 Django 项目中的值。该函数在 Python 中。这就是我的做法。我将myScript.py
保存在views.py
所在的应用文件夹中。
template.html
:
...
<button type="submit" class="btn btn-primary" value="nonlBis" name="bisBtn">Submit</button>
...
views.py
:
from app.myScript import *
...
def Functions(request):
if(request.GET.get('nonlBis')):
print(myScript.myFunction())
【问题讨论】:
你有错误吗?始终将完整的错误消息(完整的 Traceback)放在问题中(作为文本,而不是屏幕截图)。还有其他有用的信息。 不,我没有收到任何错误,页面只是重新加载,在 url 中我从表单中获取数据,但控制台中没有任何内容 通常表单在 POST 中发送数据,而不是在 GET 中。您可能必须在 Python 中使用request.POST
,或者在 HTML 中使用 <form method="GET"
...>`。
你有name="bisBtn"
,所以你有检查get("bisBtn")
,而不是get("nonlBis")
【参考方案1】:
我会这样做的。
-
为您的按钮指定一个“ID”。
<button type="submit" class="btn btn-primary" value="nonlBis" name="bisBtn" id="btnSoSpecial">Submit</button>
-
将 Js 函数绑定到该按钮。将【YOUR API URL HERE】替换为您在 urls.py 中创建的真实 url。
$("#btnSoSpecial").bind('click', function ()
$.ajax(
type: "POST",
url: "【YOUR API URL HERE】", //replace it with your real url
data:
csrfmiddlewaretoken: 'csrf_token',
nonlBis:$(this).data('value'),// This part might needs some modify
,
async: true,
success: function (ret)
//Do stuffs with returning data
,
error: function (xhr)
console.log('Something went wrong.Deal with it.');
console.log(xhr);
)
);
-
将 API url 链接到您的 views.py 中的函数,可能是这样的
path('api/functionA', views.Functions, name='functionA'),
【讨论】:
以上是关于如何从 Django 中的表单调用 Python 函数?的主要内容,如果未能解决你的问题,请参考以下文章