Salut à tous ceux qui me lisent.
Bon je veux faire communiquer mon front et mon back(django) via ajax.

Le problème est que je n'arrive pas à récupérer la variable transmise depuis la requête POST ajax.

Le code javaScript est le suivant

Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
$(function() {
              // console.log(JSON.parse(window.localStorage.getItem('articles')));
 
              var csrftoken = Cookies.get('csrftoken');
 
            function csrfSafeMethod(method) {
                // these HTTP methods do not require CSRF protection
                return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
            }
 
            $.ajaxSetup({
                beforeSend: function (xhr, settings) {
                    if (!csrfSafeMethod(settings.type) && !this.crossDomain) {
                        xhr.setRequestHeader("X-CSRFToken", csrftoken);
                    }
                }
            });            
 
              // ajax call on the cart chekout
              const articles = JSON.parse(window.localStorage.getItem('articles'));
              function callAjax(f) {
                $.ajax({
                    url: '/management/check_cart/',
                    dataType: 'json',
                    contentType: 'application/json; charset=utf-8',
                    data: {art: articles,},
                    type: 'POST',
                    success: f,
                    error: function(error) {
                        console.log(error.statusCode);
                    }
                });
            }
 
            function callback(response) {
                const r = JSON.parse(response);
                console.log("Voici le retour du serveur : " + r);
            }
 
            $('#check_cart').click(function() {
                callAjax(callback);
              });
          });
Notez que j'utilise une lib javaScript Cookie pour récupérer le csrftoken.

La vue django correspondante est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
def check_cart(request):
    """ Receive a articles dict data from the frontend and
    show it(with full details) as cart """
 
    if request.method == "POST":
        if request.is_ajax():
            articles = request.POST.get('art', None)
            print(articles)
        data = {"articles": articles}
        return JsonResponse(data)
    return render(request, 'management/cart.html')
Je vous présente l'erreur (qui en gros veut dire que l'objet articles est vide) :
TypeError: the JSON object must be str, bytes or bytearray, not NoneType
Donc c'est ça ! J'espère avoir été assez claire pour avoir des réponses sans trop de difficultés.
Et merci d'avance...