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