A
A
ahmed_al_asad2017-08-09 15:44:13
Django
ahmed_al_asad, 2017-08-09 15:44:13

How to redirect via AJAX in a view?

In general, my mentor gave me the following task:
"Make an analogue of www.youtube-mp3.org . We use youtube-dl to take the link to the video and redirect the user to this link. He will be prompted to save the file. Save the request history. Publish the code on github

Theory : HTTP(0.9,1.0,1.1,2)
Methods
Status code"

Everything turned out to be done as it should, the only thing the mentor wants is for a redirect to occur in the view, but for me it happens in ajax. But I do not understand how to do this, the only thing the mentor does is drop this link https://en.wikipedia.org/wiki/HTTP_301 and say read

HTML

<div class="input-field col s12 ">
  <input id="input_text" type="text" name="" value="">
  <label for="input_text" id="label_text">Input link of video</label>
</div>

AJAX:
$(document).ready(function() {
    $("#click_button").click(function(){
        var url_value = $("#input_text").val(); // Получаем URL с инпута идентификатор input_text
        var regExp = /^(?:https?:\/\/)?(?:m\.|www\.)?(?:youtu\.be\/|youtube\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=))((\w|-){11})(?:\S+)?$/;
        var match = url_value.match(regExp); // Прогоняем наше URL через регулярное выражение

        if (match) { // Если URL прошла валидацию
            if (confirm('Хотите скачать данное видео? ' + url_value)) { // Спрашиваем пользвателя не хочет скачать ли он скачать видео
                $.ajax({ // Отправляем это АЯКС запросом
                    url: '/app/results/', // На какой URL отправлять нам запрос
                    type: 'GET', // Метод запроса
                    data: {
                        'url': url_value // Что отправлять
                    },
                    dataType: "text" // Тип того что мы отправляем
                });
                window.location = url_value; // Редирект пользователя по URL которую он ввел
            }
        } else {
            alert('Не правильный адрес ссылки!'); // Если пользователь не прошел валидацию то выводим окно с сообщением
        }
    });
});

VIEW:
def download_video(request):
    if request.is_ajax(): # Проверяем был ли AJAX запрос
        get_request = request.GET['url'] # Ловим url который передали аяксом
        response = HttpResponse()
        response.set_cookie('url', get_request) # Устанавливаем куку для каждого запроса

        url = Link(url=get_request) # Добавляем наш url в поле url
        url.save() # Сохраняем нашу модель

        ydl_opts = { # Опции библиотеки youtube_dl
            'outtmpl': MEDIA_ROOT+'/'+'%(title)s.%(ext)s', # Путь куда скачивается видео
        }

        with youtube_dl.YoutubeDL(ydl_opts) as ydl:
            ydl.download([get_request]) # Скачиваем видео
        return response
    else:
        return render(request, 'app/index.html') # Если AJAX запрос не пришел выводим страницу index.html

Answer the question

In order to leave comments, you need to log in

2 answer(s)
A
Astrohas, 2017-08-09
@Astrohas

return redirect(url)?

L
lcd1232, 2017-08-10
@lcd1232

return HttpResponseRedirect('/path/to/redirect')
https://docs.djangoproject.com/en/1.11/ref/request...

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question