Bonjour,
Je suis assez nouvelle en Django, mais surtout en JS avec Ajax.
J'ai une première page assez complexe qui va demander de charger des fichiers et qui va se recharger en affichant les données chargées dans des champs qui peuvent être modifié par l'utilisateur. Jusque là pas de soucis et j'utilise js + ajax dans le template pour y arriver.
Sur cette page j'ai un bouton pour calculer et envoyer les (path) fichiers résultats sur une autre page pour que l'utilisateur puisse les télécharger en local. Et là, je n'ai rien...
Voici la commande ajax d'envoie :
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 $.ajax({ url: "/filmchromique/result/", type: "POST", data: formData, processData: false, contentType: false, beforeSend: function (xhr, settings) { xhr.setRequestHeader("X-CSRFToken", $('input[name="csrfmiddlewaretoken"]').val()); }, success: function(data){ console.log(data.protocol_file) $('#protocol_file').html(data.protocol_file); $('#filename').html(data.filename); window.location.href="/filmchromique/result/" }, error: function (data, textStatus, jqXHR) { console.log(data) } });
Les différents console sont bons, j'ai bien mes paths dedans
Voici la vue qui va recevoir la donnée :
Si j'y vais au débugger pycharm, j'ai un comportement que je ne comprends pas. Il va passer une première fois dans le post qui appelle le get_context_data (je suis bien en request POST). Et là, ma donnée est bien présente dans mon context, tout est parfait. MAIS, avant d'afficher quoique ce soit, il repasse dans cette classe dans le get_context_data (je suis en request GET) et je n'ai absolument rien, comme si il initialisait un nouvel objet. Pourquoi ? Comment faire ?
Code : 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 class displayResultPage(TemplateView): """ This Function is activate when user click on the launch button of the convertToDose page. It receive the request, create the JSON file and launch the ConvertToDose Analysis. Then it redirect to the Result page """ template_name = 'result.html' filename = 'None' protol_file = 'None' def get_context_data(self, **kwargs): kwargs = super(displayResultPage, self).get_context_data(**kwargs) kwargs["filename"] = self.filename kwargs["protocol_file"] = self.protol_file return kwargs def post(self, request, *args, **kwargs): self.filename = copy.deepcopy(request.POST.get("img_path")) self.protol_file = copy.deepcopy(request.POST.get("json_path")) context = self.get_context_data(**kwargs) #context["filename"] = copy.deepcopy(request.POST.get("img_path")) #context["protocol_file"] = copy.deepcopy(request.POST.get("json_path")) #kwargs = { # "filename": self.filename, # "protol_file": self.protol_file, #} return self.render_to_response(context)
Merci![]()
Partager