#javascript #html #django #django-views #render
Вопрос:
что делает мое приложение, так это захватывает живые изображения и извлекает некоторые значения с помощью Google vision ocr. Я получаю данные из внешнего скрипта python и хочу отобразить выходные данные в текстовом поле html.
вот мой views.py шаблон
from django.shortcuts import render, render_to_response
from django.http import HttpResponse
from django.http import JsonResponse
from .models import TemperatureRecordsF, TemperatureRecordC , BloodPressureRecord , SPO2Levels
import sys
import base64
from PIL import Image
from subprocess import run, PIPE
def button(request, *args, **kwargs):
return render(request,'capturr1.html',)
def external(request, *args, **kwargs):
request_getdata = request.POST.get('img64',None)
selected_radio = request.POST.get('radio_seleect',None)
print(selected_radio)
# print(request_getdata)
headed, encoded = request_getdata.split(",",1)
data = base64.b64decode(encoded)
with open("D:/dev/django/src/OCR/media/image.png", "wb") as f:
f.write(data)
path = 'D:/dev/django/src/OCR/media/image.png'
out = run([sys.executable,'D://dev//django//src//OCR//detect_text.py',path],shell=False,stdout=PIPE)
print(out.stdout)
context = {
'output' : out.stdout
}
return render(request,'capturr1.html',context)
Вот мой шаблон capturr1.html
<form class="contentarea" action="/external" method="POST" id="capture" name="capture">
{% csrf_token %}
<input class="form-check-input" type="radio" name="inlineRadioOptions" id="inlineRadio1" value="option1">
<label class="form-check-label" for="inlineRadio1">Temperature °F</label>
<input class="form-check-input" type="radio" name="inlineRadioOptions" id="inlineRadio2" value="option2">
<label class="form-check-label" for="inlineRadio2">Temperature °C</label>
<input class="form-check-input" type="radio" name="inlineRadioOptions" id="inlineRadio3" value="option3">
<label class="form-check-label" for="inlineRadio3">Blood Pressure</label>
<input class="form-check-input" type="radio" name="inlineRadioOptions" id="inlineRadio4" value="option4">
<label class="form-check-label" for="inlineRadio4">Oxygen Saturation Levels</label><br>
<video id="video">Video stream not available.</video><br>
<button id="startbutton">Take photo</button>
<input type="submit" value="Save" class="save" name="savebutton"/>
<input type="text" />{{ output }}
<canvas id="canvas" style="display: none;"><br>
</canvas>
<div class="output">
<img id="photo" alt="The screen capture will appear in this box."><br/>
</div>
</form>
Это мой запрос ajax. Я отправляю данные изображения на холсте и выбранные значения переключателей в django.
$(document).ready(function() {
$("#capture").submit(function(event) {
var radio_select = document.capture.inlineRadioOptions.value;
console.log(radio_select)
event.preventDefault();
$.ajax({
type: "POST",
url: 'external',
data: {
'img64': photo.src,
'radio_seleect': radio_select
}
}).done(function() {
console.log('sent');
});
});
});
Комментарии:
1. в чем ошибка?
2. Не появляется никаких ошибок, контекст не отображается в html-шаблоне
3.
print(out.stdout)
это печать какой — то ценности?4. ДА. Он будет напечатан на консоли
5. Вы пытались использовать режим отладки как в браузере, так и в python, чтобы увидеть, что делается в каждом из них?
Ответ №1:
предполагая, что ваши URL-шаблоны выглядят следующим образом: path('external/', views.external, name='ext_data')
if request.is_ajax():
if out is not None:
return JsonResponse({'output':out.stdout})
на стороне js
$.ajax({
... ...
url: '/external/',
... ...
}).done(function (msg) {
console.log(msg)
);
проверьте, работает ли это..