Я хочу загрузить два изображения из sqlite (db), используя xhr, и при щелчке одного изображения данные будут отправлены на сервер (асинхронно), и два изображения будут заменены следующими изображениями из db.Теперь у меня нет ошибок, но я не вижу изображение в браузере.Я думаю, что соединение JSON - DJANGO - DB не является правильным.
Я написал код только для одного изображения.Пожалуйста, научите меня
survey.html
<script type="text/javascript">
var xhr = new XMLHttpRequest();
xhr.onload = function () {
{% for wheel in wheels|slice:"1:2" %}
xhr.open('GET', '{{ wheel.wheel_sample.url }}', true);
var img = new Image();
var response = xhr.responseText;
var binary = ""
for(i=0;i<response.length;i++){
binary += String.fromCharCode(response.charCodeAt(i) & 0xff);
}
img.src = 'data:image/jpeg;base64,' + btoa(binary);
var canvas = document.getElementById('showImage');
var context = canvas.getContext('2d');
context.drawImage(img,0,0);
{% endfor %}
}
xhr.overrideMimeType('text/plane; charset=x-user-defined');
xhr.send();
</script>
<div class="wheels-img-container">
<canvas class="wheel-first" id="showImage" onclick="img1_click();" width="135" height="135"/>
<canvas class="wheel-second" id="showImage2" onclick="img2_click();" width="135" height="135"/>
</div>
views.py
def survey(request):
json_serializer = serializers.get_serializer("json")()
wheels = json_serializer.serialize(Wheel.objects.all(), ensure_ascii=False)
return render(request, 'polls/survey.html', {'wheels' : wheels})
моделей.py
image_storage = FileSystemStorage(
# Physical file location ROOT
location='/media/'.format(settings.MEDIA_ROOT),
# Url for file
base_url='/media/'.format(settings.MEDIA_URL),
)
def image_directory_path(instance, filename):
# file will be uploaded to MEDIA_ROOT/media/<filename>
return 'media/{0}'.format(filename)
def logo_directory_path(instance, filename):
# file will be uploaded to MEDIA_ROOT/dashboard/picture/<filename>
return 'media/{0}'.format(filename)
class Wheel(models.Model):
wheel_sample = models.ImageField(blank=True,
upload_to=image_directory_path, storage=image_storage)
wheel_name = models.CharField(max_length=200, null=True)
votes = models.IntegerField(default=0)