Mam następujący ajax wezwanie do aktualizacji konkretny pole modeluAjax wywołanie braku w Django
$("#updateLink").click(function(){
var dec_text = $('#desc_text').val();
$.ajax({
type: "POST",
url:"https://stackoverflow.com/users/update_desc/",
data: {
'val': dec_text,
},
success: function(){
$(".display, .edit").toggle();
$("#descText").html(dec_text);
},
error: function(){
alert("Error");
},
});
return false;
});
i moim zdaniem jest to
@csrf_exempt
def update_desc(request):
if request.is_ajax():
if request.method == 'POST':
desc_text = request.POST.get('val', False)
if desc_text:
profile = user.profile
profile.desc = desc_text
profile.save()
return_message = "Sent mail"
return HttpResponse(return_message,mimetype='application/javascript')
ja ciągle otrzymuję komunikat o błędzie i ja nie wiem jak to rozwiązać. Użyłem nawet dekoratora csrf_exempt
do obejścia problemu, jeśli problem został spowodowany przez brakujący csrf token
, ale problem nadal występuje.
Z wyjątkiem jednego ajax post
, który w moim szablonie base
powoduje niepowodzenie wszystkich wywołań ajax. Czy ktokolwiek może pomóc zrozumieć, co się tutaj dzieje. W razie potrzeby mogę podać więcej szczegółów.
Edit:
Dodałem plik js
zawierający tę https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#ajax w moim szablonu bazowego, więc oznacza to, że jest on obecny we wszystkich moich szablonów. Używam wersji 1.3 django.
Spodziewam się, że nadal otrzymujesz błąd csrf_token missing. Jeśli tak, moja odpowiedź jest zamieszczona poniżej, należy podać błąd po użyciu csrf_exempt. –
Właściwie to nie wiem, jak uzyskać błąd, ponieważ widzisz, że właśnie wprowadziłem alert w moim wywołaniu "błędu", które mówi mi, że moje wywołanie ajaxowe nie powiodło się, ale nie mówi mi, jaki był błąd. Jak mogę uzyskać błąd? – Sachin
Po pierwsze, w pliku settings.py DEBUG = True. Nie wyświetliłoby to twoich błędów ajaxowych, ale zdecydowanie innych, które nie są zaspokajane. –