Форум программистов, компьютерный форум, киберфорум
Python: Django
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/47: Рейтинг темы: голосов - 47, средняя оценка - 4.68
0 / 0 / 0
Регистрация: 14.05.2019
Сообщений: 10

Как передать данные из JS в Django?

22.04.2020, 14:52. Показов 10107. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, у меня возникла проблема.
Я хочу сделать фильтр на сайте, в котором можно будет выбрать несколько пунктов, а потом нажать кнопку "Применить". Обработку нажатия кнопки производит JS и передает в зависимости от выбранных пунктов данные в Django. Сам сервер Django обрабатывает данные и открывает новую URL-страницу, где будут выведены все объекты из БД, которые будут удовлетворять условиям.
Проблема связана с тем, что я не знаю, как передать эти данные из JS в Django. В инете находила Ajax и XMLHttpRequest, но они, вроде, отправляют данные на сервер, а потом получают ответ с сервера, а мне необходимо просто отправить данные на сервер.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.04.2020, 14:52
Ответы с готовыми решениями:

Передать данные из csv в таблицу html через Django
Собственно весь вопрос в заголовке. Как можно лучше всего это реализовать? Есть csv файл с 3-мя столбцами, который постоянно...

django-tables2: Как отложенно передать поле?
Мне надо из TopicListTable передать в класс ActionsColumn поле user, но после того, как он в before_render инициализируется. Есть такая...

Как в Django передать youtube ссылку в шаблон?
Я хочу на сайт добавить ссылки на видео с ютуба ,но при загрузке страницы iframe который ,я добавил через django admin, который я вывел...

12
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
22.04.2020, 14:56
Цитата Сообщение от Liza1996 Посмотреть сообщение
Django обрабатывает данные и открывает новую URL-страницу
django не может открыть страницу, это не браузер

Цитата Сообщение от Liza1996 Посмотреть сообщение
как передать эти данные из JS в Django
они отправляют данные на сервер, а дальше - это уже проблема сервера, что делать с ними, и что ответить на такой запрос.
0
 Аватар для m0nte-cr1st0
1043 / 578 / 242
Регистрация: 15.01.2019
Сообщений: 2,178
Записей в блоге: 1
23.04.2020, 11:44
Liza1996, тут, по идее, никакой жс вообще не нужен. Но если всё-таки через жс, то какой-то аякс/фетч/хмлхттпреквест делай на сервер и возвращай оттуда ссылку для редиректа и средствами жс делай редирект.
0
5 / 5 / 0
Регистрация: 25.09.2017
Сообщений: 569
24.12.2020, 18:13
А в случае , если js возвращает некоторый параметр (токен) как его передать в контроллер django? Как POST-параметр?:

Python
1
request.POST["something"]
?
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
24.12.2020, 18:18
Цитата Сообщение от Alex_py Посмотреть сообщение
А в случае , если js возвращает некоторый параметр (токен) как его передать в контроллер django? Как POST-параметр?:
Не совсем понятно в чем именно вопрос - как передать или как получить? Если как получить - то это зависит от того, как передал.
1
5 / 5 / 0
Регистрация: 25.09.2017
Сообщений: 569
24.12.2020, 19:20
Цитата Сообщение от Jabbson Посмотреть сообщение
Если как получить - то это зависит от того, как передал.
JS-Скрипт-модуль подключен к глав. странице. Этот модуль обращается к внешнему серверу (этот сервер относится к api-сервису).

Есть javascript, который получает (или возвращает) access_token, который используется в контроллере для вызова функций api-сервиса. Вот его код, который также подключен к глав. странице:

HTML5
1
2
3
4
5
6
7
<script>
var auth = vkBridge.send("VKWebAppGetAuthToken", {"app_id": 000000, "scope": "messages"});
if (auth.status != 200) {
    alert(auth.status + ": " + auth.statusText);
}
else {return vkBridge.send("VKWebAppGetAuthTokenResult")["data"]["access_token"];}
</script>
Я знаю javascript очень плохо, поэтому, может не совсем правильно соблюдаю синтаксис.


Эту страницу я хотел бы отрендерить с помощью контроллера django и для получения остальных элементов этой страницы, котроллер обращается к api-сервису, которому нужен access_token.

В поддержке мне объяснили так, что если я хочу внедрить свое django-приложение в каталог их сайта, то мне нужно подключить их js-скрипт, чтобы получить access_token. Ну каждый access_token соответствует какой-то сессии, какого-то пользователя. А как его извлечь для использования в контроллере django --- нет такой информации.
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
24.12.2020, 19:35
Если нужно послать что-либо в контроллер от клиента (где этот javascript скрипт находится, судя по всему) - нужно сделать запрос к серверу, на котором крутится приложение джанговое, ровно так же, как если бы никакого vkBridge-a не было.
1
5 / 5 / 0
Регистрация: 25.09.2017
Сообщений: 569
24.12.2020, 19:57
Цитата Сообщение от Jabbson Посмотреть сообщение
нужно сделать запрос к серверу
На url глав. страницы то есть?

Средствами javascript?

Осталось найти как это сделать. Спасибо!
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
24.12.2020, 20:03
Цитата Сообщение от Alex_py Посмотреть сообщение
На url глав. страницы то есть?
Той, на которой будет обработчик для этого запроса.
Цитата Сообщение от Alex_py Посмотреть сообщение
Средствами javascript?
Ну да, особенно если это должно происходить в контексте одной веб страницы.
Цитата Сообщение от Alex_py Посмотреть сообщение
Осталось найти как это сделать. Спасибо!
Можно и средствами голого js, и через сторонние библиотеки, если прикручены (или прикрутить и использовать).
1
5 / 5 / 0
Регистрация: 25.09.2017
Сообщений: 569
24.12.2020, 23:36
А потом токен этот искать где, в куках?:

Python
1
2
if request.method == "POST":
     access_token = request.COOKIES["access_token"]
или в этом словаре:

Python
1
2
if request.method == "POST":
     access_token = request.GET["access_token"]
Я собираюсь отправлять access_token на тот же url, где будет запускаться скрипт, отправляющий access_token.
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
25.12.2020, 00:03
Цитата Сообщение от Alex_py Посмотреть сообщение
А потом токен этот искать где, в куках?:
а как этот токен постится?
1
5 / 5 / 0
Регистрация: 25.09.2017
Сообщений: 569
25.12.2020, 01:25
JavaScript
1
2
$.post("127.0.0.1:8080", {"access_token": access_token},).done(function(data){
    alert("Авторизация завершена" + data);});
"127.0.0.1:8080" --- это, допустим, главная страница.
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
25.12.2020, 02:38
Python
1
token = request.POST.get('access_token')
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.12.2020, 02:38
Помогаю со студенческими работами здесь

Как передать django переменную в атрибут формы action?
Доброго времени суток, есть форма, в ней атрибут action На данный момент запись следующая: action = &quot;{{ page }}&quot; Нужно...

Как передать в ссылку django параметр таблицы mysql
Всем доброго времени суток. Задание дали такое: из бд (mysql) выводить на сайт данные в виде доски объявлений. Сделал так, что на...

Как добавить данные в БД Django
Делаю книжный веб-магазин. В магазине есть лента, где пользователь выбирает книгу, нажимает на нее, знакомится с описанием и ценой и если...

Как вывести данные в ряд на Django?
Добрый день! Возникла проблема при выводе данных на HTML страницу. Django выводит посты в столбик. {% for project in projects %} ...

Как передать данные в Series данные массива. Для Apexcharts
создание объекта let dataArea={ 'Yandex-search':, 'Yandex-network':, 'Google':, 'Sum': }; //...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru