Bonjour,

je débute sur django et je voulais tester d'envoyer une donnée via un appel ajax a une view python, la traiter et la renvoyer dans ma page web ^^

L'appel ajax se déroule bien et quand je regarde la réponse de ma requete le contenu est bon mais ne s'affiche pas le navigateur :
Nom : help_django.jpg
Affichages : 304
Taille : 144,0 Ko

Du coup je comprends pas trop pourquoi ca me fait ça ^^

mon code :

index.html:
Code HTML : 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
<html lang="en" dir="ltr">
  <head>
    {% load static %}
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.js" integrity="sha512-n/4gHW3atM3QqRcbCn6ewmpxcLAHGaDjpEBu4xZd47N0W2oQ+6q7oc3PXstrJYXcbNU1OHdQ1T7pAP+gi5Yu8g==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
    <script type="text/javascript" src="{% static 'loto/js/loto.js' %}"></script>
    <link rel="stylesheet" href="{% static 'loto/css/loto.css' %}">
    <meta charset="utf-8">
    <title>Django test</title>
  </head>
  <body>
    <div id="bdd_uptdate">
      <form action="#" method="post">
        {% csrf_token %}
          <button type="button" action="bdd_update" id="btn" name="button_uptdate">Mise à jour des tirages</button>
      </form>
    </div>
    <div id="test">
      <p>json response= {{ action }} </p>
    </div>
  </body>
</html>

views.py
Code Python : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
from django.shortcuts import render
from django.template import loader
from django.views.decorators.csrf import csrf_exempt, csrf_protect
from django.http import *
from .tools import *
 
@csrf_exempt
def home(request):
    x=request.POST.get('x')
    print(type(x))
    # y=testTools(x)
    return render(request,'loto/index.html',{'action':x})

loto.js:
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
44
45
46
47
48
function getCookie(name) {
    let cookieValue = null;
    if (document.cookie && document.cookie !== '') {
        const cookies = document.cookie.split(';');
        for (let i = 0; i < cookies.length; i++) {
            const cookie = cookies[i].trim();
            // 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;
}
 
 
$(document).ready(function(){
  const request=new Request('{% url "test" %}',{method: 'POST',})
 
  let csrftoken = getCookie('csrftoken');
  // console.log(csrftoken);
  $.ajaxSetup({
        beforeSend: function(xhr) {
            xhr.setRequestHeader('Csrf-Token', csrftoken);
        }
    });
 
  $('#btn').on('click',function(){
    let $answer = $('#answer');
    let value=$('#btn').attr('action');
    if ( value == "bdd_update"){
      // let request=new Request('test/',{method: 'POST',body:data})
      // fetch(request)
      //   .then(response => response.json())
      //   .then(result => {console.log(result);})
    $.ajax({
      headers: { "X-CSRFToken": csrftoken },
      url: '',
      type: "post",
      data: {'x':value},
      success: function(data){
        console.log("c'est passer");
      }
    });
  }
  });
});

Je vous remercie par avance