Работаю с Django. Имеется главная страница написанная на html, на ней располагается кнопка. По нажатию на кнопку, с помощью ajax-запроса, нужно получить python-script и каким-то образом его запустить.
Вот, к примеру, маленький скрипт:
import random
print(random.randint(0,1000000))
В файле urls.py
from django.urls import path
from .views import MyAction
urlpatterns = [
path('myaction/', MyAction.as_view(), name='my-action'),
]
В файле views.py создаём наш класс MyAction
. Пишем в нём функцию post
, которая будет принимать только POST запросы.
from django.views.generic import View
from django.http import JsonResponse
import random
class MyAction(View):
def post(self, *args, **kwargs):
data = {}
# Получаем данные из запроса
action = self.request.POST.get('action')
# Проверяем что значение соответствует ожидаемому
# и возвращаем число
# иначе строку с текстом Error
if action == 'NeedRandom':
data['result'] = random.randint(0,1000000)
else:
data['result'] = 'Error'
return JsonResponse(data)
Создаём наш JavaScript, который будет отсылает запрос на сервер по указанному URL при нажатии на кнопку имеющую атрибут class="mybutton"
и получать от него ответ в success: function(data){...}
, ответ будет виден в консоли браузера.
$(document).ready(function(){
// Forming csrf_token
function getCookie(name) {
let cookieValue = null;
if (document.cookie && document.cookie != '') {
let cookies = document.cookie.split(';');
for (let i = 0; i < cookies.length; i++) {
let cookie = jQuery.trim(cookies[i]);
// Does this cookie string begin with the name we want?
if (cookie.substring(0, name.length + 1) == (name + '=')) {
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
break;
}
}
}
return cookieValue;
};
let data = {}
$('.mybutton').on('click', function(e){
data['action'] = 'NeedRandom';
data['csrfmiddlewaretoken'] = getCookie('csrftoken');
SendAjax();
});
function SendAjax(){
$.ajax({
url: 'http://127.0.0.1:8000/myaction/',
method: 'POST',
data: data,
cached: true,
success: function(data){
console.log(data);
},
error: function(e){
console.log(e);
}
})
}
})
И, соответственно, сама кнопка на странице.
<input type="submit" class="mybutton" value="Случайное число">
Не забудьте подключить на странице JQuery библиотеку и JS-файл с Ajax скриптом
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть файл indexhtml в него регулярно добавляются посты(статьи) подобного вида(через админку), только текст и ничего больше
Вопрос в следующем, как мне при выводе ошибки валидации указать свое название поля
Есть такой каталог, в котором каждый блок должен иметь обводку 1px
Не получается убрать стрелки слайдера на разрешении до 768pxЧерез breakpoint пробовал