使用HTML / Django调用python函数

时间:2019-01-15 19:20:20

标签: python ajax django websocket channels

我有一个高速球Intelbras VIP 5220 SD红外摄像机,可以使用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')

]

1 个答案:

答案 0 :(得分:0)

有关如何实现此目标的草稿

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文件中的view方法进行匹配,并记住在我使用他们的ajax方法时包括Jquery。

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