@ahmed_al_asad

Как сделать редирект через AJAX в view?

В общем мой ментор дал такое задание мне:
"Сделать аналог www.youtube-mp3.org. Забираем с помощью youtube-dl ссылку на видео и редиректим пользователя по этой ссылке. Ему предложится сохранить файл. Сохранять историю запросов. Код опубликовать на github

Теория: HTTP(0.9,1.0,1.1,2)
Методы
Статус коды"

Все получилось сделать как надо, единственное ментор хочет, чтобы происходил редирект в view, а у меня он происходит в аяксе. Но я не понимаю как это сделать, ментор только и делает, что скидывает эту ссылку https://en.wikipedia.org/wiki/HTTP_301 и говорить читать

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
  • Вопрос задан
  • 668 просмотров
Пригласить эксперта
Ответы на вопрос 2
Astrohas
@Astrohas
Python/Django Developer
return redirect(url)?
Ответ написан
@lcd1232
return HttpResponseRedirect('/path/to/redirect')
https://docs.djangoproject.com/en/1.11/ref/request...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы