使用 HTML/Django 调用 python 函数

Posted

技术标签:

【中文标题】使用 HTML/Django 调用 python 函数【英文标题】:Call a python function using HTML/Django 【发布时间】:2019-01-15 19:20:19 【问题描述】:

我有一台摄像机 Speed Dome Intelbras VIP 5220 SD IR,我可以使用 python 代码移动它的位置(PTZ 功能)。但是,我想使用网页上的按钮移动它的位置。我使用 Django 创建了一个网页,所以我想单击按钮,然后我希望我的相机移动,但我不知道如何使用 Django 调用我的 python 函数。我找到了一些关键字,如 Django Channels、Ajax 和 WebSockets,但一切看起来都非常复杂。

到目前为止,我这样做了:

html

<script>
    $(document).ready(function()
        $("button").click(function()
            //alert("Botao foi clicado");
            $.ajax(
                type: "POST",
                url: "/ajax_move_camera/",
                data:
                    "var1":"val1"
                ,
                dataType: 'json',
                sucess: function(data)
                    alert("Sucess");
                ,
                error: function(data)
                    alert("Error")
                
            )  
        );
    );
</script>

VIEWS.py

def ajax_move_camera(request):
    x=10
    data=
    return JsonResponse(data)

URL.py

urlpatterns = [
    url(r'^$', views.index, name='index'),
    url(r'^$', views.ajax_move_camera, name='ajax_move_camera')

]

【问题讨论】:

嘿@Gustavo GeoDrones,您应该更改ajax_move_camera 的url 以匹配您在JQuery 函数中使用的url。 【参考方案1】:

关于如何处理此问题的草稿

your_template.html

<html>
    ... stuff ...
    <button id="camera_move_btn">Move Camera</button>
    ... stuff ...

<script>
    function call_this_function_on_btn_click() 
        $.ajax(
            type: "POST",
            url: "/ajax_move_camera/",
            data: 
                "var1": "val1"
                "csrfmiddlewaretoken", " csrf_token "
            ,
            dataType: 'json',
            success: function(data) 
                ... something comes back ...
            
        )
    
</script>

views.py

def ajax_move_camera(request):
    ... do something ...
    data = 
    return JsonResponse(data)

您必须将 ajax url 与 url.py 文件中的视图方法相匹配,并记住在我使用他们的 ajax 方法时包含 Jquery。

如果您不想添加 Jquery,您可以查看 XMLHttpRequest,它将执行请求。

【讨论】:

谢谢斯蒂芬,但我试过了,它总是收到一条消息错误,如果我使用“csrfmiddlewaretoken”,代码也不起作用。听起来我在这里遗漏了一些重要的东西。我会更新我的问题,所以也许你可以看到发生了什么。

以上是关于使用 HTML/Django 调用 python 函数的主要内容,如果未能解决你的问题,请参考以下文章

Python Django 框架开发

如何使用 django(查询)在我的 html 中显示更多对象

为 HTML5 Django Web 应用程序实现实时通知系统

Django安装

提交表单html django

html Django Admin:使用AJAX保存 - 覆盖`admin / change_form.html`模板