django используя xhr изменить изображение из db (sqlite) - PullRequest
0 голосов
/ 03 января 2019

Я хочу загрузить два изображения из 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...