Создать новый URL для функции просмотра, которая будет проверять ввод.
path('ajax/validate_input/', views.ValidateInput.as_view(), name='my_ajax_url'),
В views.py
выполните проверку, а затем верните JsonResponse
.
from django.views import View
from django.http import JsonResponse
class ValidateInput(View):
def post(self, request):
# Do validation
return JsonResponse({
'valid': True,
'message': 'Invalid Characters',
})
Теперь в своем шаблоне напишите js-код, который будет отправлять ajax-запросы на этот URL-адрес.
В соответствии с полученным ответом внесите изменения в свою веб-страницу, используя js для успешной работы с ajax.
// add jQuery
// put the code below inside an event handle, maybe on input change
$.ajax({
url: {% url 'my_ajax_url' %},
method: 'POST',
data: {
body: body,
csrfmiddlewaretoken: '{{ csrf_token }}'
},
dataType: 'json',
success: function(data){
console.log(data.valid);
console.log(data.message);
// do stuff to change your webpage here
}
});
Я бы порекомендовал проверить ввод при изменении ввода, но если вы хотите сделать это из отправки, добавьте обработчик событий для отправки формы.Там используйте event.preventDeafault
, чтобы предотвратить отправку формы, затем выполните Ajax и, в соответствии с полученным JSON, сделайте что-нибудь еще.Возможно, если valid = true
, то продолжить, или, если valid = false
, показать окно, полученное в json, ниже поля ввода.