使用AJAX执行拍摄照片的python脚本(raspberry pi)

时间:2018-04-09 17:18:52

标签: python ajax django dynamic raspberry-pi

我正在开发一个项目,我需要构建一个允许与Raspberry Pi相机交互的Web界面。我正在使用Django和python作为后端。我希望能够按下Web界面上的一个按钮,该按钮将执行python脚本以使用pi相机拍照。我想我需要使用AJAX来完成这个,但我真的不明白我将如何设置它。我对Django本身相对较新。

1 个答案:

答案 0 :(得分:0)

因此,假设您有一个Python函数,它可以使用相机拍摄照片并返回文件的路径。

from my_module import take_pic

my_pic = take_pic()
print(my_pic)  # '/path/to/the/picture'

你说你不知道views.py应该是什么样子,所以我假设你没有准备好任何Django代码。要创建Django项目,请安装Django并使用django-admin startproject NAME

所以你需要的是一个Django视图和它的相关URL。让我们从URL开始:

# urls.py
from . import views

urlpatterns = [
    url(r'^take_pic/', views.take_picture, name='take_pic'),
]

现在,在views.py所在的同一文件夹中创建urls.py模块。

# views.py
from django.http import JsonResponse

from my_module import take_pic


def take_picture(request):
    my_pic = take_pic()
    return JsonResponse({'path': my_pic})

最后在您的Javascript代码中(最有可能在Django HTML模板中,使用其他视图呈现,但我会将其作为练习):

// this example uses JQuery, but you can find plain Javascript examples on the net

<button id="my-button"></button>

<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>

<script>

  $(document).ready(function () {

    $('my-button').click(function() {

      // url name here is what you wrote in urls.py
      $.getJSON('{% url "take_pic" %}', function (data) {

        var picture_path = data.path;
        // add an HTML <img> tag where you need it, using the picture path
        // note that your view might need to return a relative path, not absolute
      });

    });

  });

</script>

我认为这是一个很好的起点!