如何从 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 中使用 &lt;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 函数?的主要内容,如果未能解决你的问题,请参考以下文章

怎么能在django中调用MySQL数据库中的某列值?

如何从 django 中的内联表单接收上传的文件?

用户从图像列表中选择的 Python/Django 表单

如何从 Django 中的表单中捕获错误?

在 Django python 表单中,我如何给表单字段一个“第二个名字”?

如何从 Django 中的编辑表单更新对象?