Использовать AJAX возвращенный URL-адрес ИЗОБРАЖЕНИЯ из папки Django MEDIA - PullRequest
0 голосов
/ 31 января 2020

Я пытаюсь использовать URL возвращенного изображения (через AJAX call) в качестве фона для div. Этот URL-адрес ссылается на папку MEDIA Django.

Структура папки

website

    media
        music
            image.jpg

    music
        templates
            player.html

Каждое поле объекта работает, хотя я не могу использовать URL-адрес возвращаемого изображения.

views.py

from django.core import serializers
from django.http import JsonResponse
from django.template.loader import render_to_string

def change_song(request):
    featured_song_id = request.session['featured_song']
    song_list = Song.objects.all().order_by('-date') # list of objects
    if request.method == "POST":
        request.session['featured_song'] = request.POST['song_id']
        featured_song_id = request.session['featured_song']
    obj = Song.objects.get(pk=featured_song_id)
    serialized_obj = serializers.serialize('json', [obj])
    serialized_song_list = serializers.serialize('json', song_list)
    string_render = render_to_string('music/player.html')
    context = {
        'html': string_render,
        'obj': serialized_obj,
        'song_list': serialized_song_list,
    }
    return JsonResponse(context, safe=False)

AJAX / jQuery / Javascript

    $('a.play').click(function(e){
        e.preventDefault();
        var song_id = $(this).attr('id');
        var this_url = $(this).attr('href');
        $.ajax({
            type: 'POST',
            url: this_url,
            data: {
                'song_id': song_id,
            },
            dataType: 'json',
            success: function(data) {
                obj = JSON.parse(data.obj);
                image = obj[0]['fields']['image'];
                $('.player-image').css('background', 'url(/media/' + image + ') no-repeat center; background-size: 100% 100%;');
            }
        });
    });

Я также пытался внутри url():

image
"image"
/media/ + image
"'/media/" + image"'"

РЕДАКТИРОВАТЬ: После комментария Ивана Старостина:

значение изображения music/images/0_default.jpg, взято из console.log(image);

объединенного значения '/ media /' + + изображение /media/music/images/0_default.jpg

При переходе по URL отображается изображение правильно:

http://127.0.0.1:8000/media/music/images/0_default.jpg

Я пытаюсь переопределить рабочее изображение из django {{ object.image.url }}, которое выглядит в том же формате: проверка элемента

Примечание: изображение 0_default.jpg существует и помещается в ту же папку, что и URL-адрес проверяемого элемента

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...