Как отправить простые данные с помощью Ajax jQuery в views.py в Django?
Я хочу отправить простые данные (число) из home.html в функцию в views.py, используя Ajax jQuery. Но кажется, что функция не вызывается.
home.html: Я правильно получаю ответ об успехе. Я вижу tagID в уведомлении об успехе. Я хочу видеть это в моем views.py
...
function GetInfo(e){
document.getElementById("test3").innerHTML = e.target.myCustomID;
var tagID = e.target.myCustomID;
$.ajax({
url: 'Ajax1',
type: "POST",
data: {
'tagID': tagID,
'csrfmiddlewaretoken': '{{ csrf_token }}',
},
success: function (data) {
alert ("Congrats! You sent some data: " + tagID);}
,
error: function() {
alert ("Something went wrong");
}
})};
views.py:. Я хочу увидеть, что эта функция вызывается аяксом. Так что если команда print ("AAAAAAAAAAAAAAA") работает, я счастлив!
...
@csrf_exempt
def Ajax1(request):
print ("AAAAAAAAAAAAA")
if request.is_ajax() and request.POST():
print("BBBBBBBBBBBBB")
TagID = request.POST.get('tagID', None)
else:
raise Http404
my_app/urls.py
urlpatterns = [
url(r'', views.home_map, name="home"),
url(r'^ajax/$', views.Ajax1, name="Ajax")
]
urls.py
urlpatterns = [
path(r'', include('my_app.urls')),
path('admin/', admin.site.urls),
path(r'^ajax/$', Ajax1, name='Ajax')
]
не могли бы вы сообщить мне, чего мне не хватает? Спасибо
Вы неправильно выполняете вызов ajax. Вы должны передать EXACT URL вашей конечной точки внутри url:''
Вы передали строку 'Ajax1', которая в вашем urls.py нигде не найдена. В urls.py у вас есть 'ajax' в качестве шаблона url, а Ajax1 - это имя вашей функции представления.
Также я заметил, что в вашем urls.py у вас есть одинаковые шаблоны для двух разных методов представления (это плохая практика).
Пока что сделайте это внутри вашего ajax
$.ajax({
url: "{%url 'Ajax'%}", //This is the jinja template tag that will automatically fill in the url pattern from your urls.py corresponding to the name of that url pattern
type: "POST",
data: {
'tagID': tagID,
'csrfmiddlewaretoken': '{{ csrf_token }}',
},
success: function (data) {
alert ("Congrats! You sent some data: " + tagID);}
,
error: function() {
alert ("Something went wrong");
}
})
Похоже, что у меня была ошибка в urls.py
urls.py:
urlpatterns = [
path('', views.home_map, name='home.html'),
path('admin/', admin.site.urls),
path('ajax-view/', views.ajax1)
# path('ajax/', ajax1, name='ajax1')
]
home.html:
$.ajax({
type: "POST",
url: '{{ "ajax-view/" }}',
data: {
'csrfmiddlewaretoken': '{{ csrf_token }}',
'tagID': tagID
},
success: function (data) {
alert ("Congrats! You sent some data: "
+tagID)
,
error: function() {
alert ("Something went wrong");}
})
};