Tuple et javascript

a marqué ce sujet comme résolu.

Salut,

Pour pouvoir t’aider, pourrais-tu donner quelques détails ? Des exemples de code, ce que tu as en entrée, ce que tu veux en sortie, un peu de contexte.. Parce que là, tu nous parles de JavaScript et la seconde après de Python, c’est pas très clair :lol:

Selon les cas, la représentation textuelle Python est déjà syntaxiquement correcte en JS. Cependant, JS ne supportant pas les tuples, on peut au préalable les convertir en liste. Par exemple :

# Python
>>> [(1,2), (3,4)]
[(1, 2), (3, 4)]
>>> list(map(list, [(1,2), (3,4)]))
[[1, 2], [3, 4]]
>>> str(list(map(list, [(1,2), (3,4)])))
'[[1, 2], [3, 4]]'  // chaîne JS valide
>>> 

# JavaScript
% node
Welcome to Node.js v14.15.4.
Type ".help" for more information.
> [[1, 2], [3, 4]]
[ [ 1, 2 ], [ 3, 4 ] ]  // ok, syntaxe correcte
> 

Je te le donne pour te donner une idée, mais ce genre de pratique que l’on pourrait qualifier de peu hygiénique est à proscrire dans le cas général car elle peut se planter lamentablement dans des cas non triviaux, en plus de potentiellement présenter des failles de sécurité (car rendant l’injection de code arbitraire plus simple).

Peux-tu nous décrire ton problème dans le contexte au sein duquel il se présente ? Je ne sais pas ce que tu cherches à faire, mais il y a peut-être d’autres façon de parvenir à un résultat simple et stable, sans bidouille. Tu cherches à rendre une liste JS dans un template Python ?

+0 -0

Bonjour à tous,

Merci de vos réponse.

Actuellement je travail avec python et de tuple pour générer une page HTML avec un tableau et du code javascript qui ensuite filtre le tableau. (mais le tableau fait plus de 66 000 lignes ! donc il est très lourd à gérer par le navigateur).

Mon idée serais de convertir la liste de tuple en liste pour javascript et de générer grâce a python un page presque vierge avec la liste (et du code JS) puis deux filtres, département et type (primaire ou secondaire) et un bouton filtré qui déclenche le code JS.

Voici un autres sujet où il y a un exemple de page HTML que je génère avec python: https://zestedesavoir.com/forums/sujet/14911/filtre-tableau-html-javascript/

voilà je ne sais pas si c’est plus claire ou non ?

voilà un bout de code python :

def html3(tab):
    """
    Génération du fichier HTML avec du code Javascript pour donner la liste des etablissement par département
    :paramètre tab : liste correspondant au fichier
    :return: un fichier HTML : un Tableau avec les données du CSV triée et deux filtres par départements et Type d'établissement
    """
    x=open('ListeEtablissement_javascript_liste.html', 'w', encoding="utf-8")
    x.write("""
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>
Liste des Etablissement français
</title>
<style>th, td {text-align: center; padding: 16px;}

.titre {background-color : #FFC330;}

.lignePaire{
 background-color : #FFFFFF;
            }
 
.ligneImpaire{
 background-color : #D3D3D3;
            }

</style>
</head>
<body>

<script>
var tab = ["""+ tuple_liste(tab)+"""];
function generate_table() {
  // get the reference for the body
  var body = document.getElementsByTagName("body")[0];

  // creates a <table> element and a <tbody> element
  var tbl = document.createElement("table");
  var tblBody = document.createElement("tbody");

  // creating all cells
  for (var i = 0; i < 2; i++) {
    // creates a table row
    var row = document.createElement("tr");

    for (var j = 0; j < 2; j++) {
      // Create a <td> element and a text node, make the text
      // node the contents of the <td>, and put the <td> at
      // the end of the table row
      var cell = document.createElement("td");
      var cellText = document.createTextNode("cell in row "+i+", column "+j);
      cell.appendChild(cellText);
      row.appendChild(cell);
    }

    // add the row to the end of the table body
    tblBody.appendChild(row);
  }

  // put the <tbody> in the <table>
  tbl.appendChild(tblBody);
  // appends <table> into <body>
  body.appendChild(tbl);
  // sets the border attribute of tbl to 2;
  tbl.setAttribute("border", "2");
}
</script>
<h1>
Liste des Etablissement français
</h1>
    <select id="department" name="departements">
        <option value="rien" selected>S&eacute;lectionnez votre d&eacute;partement</option>
        <option value="01">01 - AIN</option>
        <option value="02">02 - AISNE</option> 
        <option value="03">03 - ALLIER</option>
        <option value="04">04 - ALPES DE HAUTE PROVENCE</option>
    <option value="05">05 - HAUTES - ALPES</option>
    <option value="06">06 - ALPES MARITIMES</option>
    <option value="07">07 - ARDECHE</option>
    <option value="08">08 - ARDENNES</option>
    <option value="09">09 - ARIEGE</option>
    <option value="10">10 - AUBE</option>
    <option value="11">11 - AUDE</option>
    <option value="12">12 - AVEYRON</option>
    <option value="13">13 - BOUCHES - DU - RHONE</option>
    <option value="14">14 - CALVADOS</option>
    <option value="15">15 - CANTAL</option>
    <option value="16">16 - CHARENTE</option>
    <option value="17">17 - CHARENTE - MARITIME</option>
    <option value="18">18 - CHER</option>
    <option value="19">19 - CORREZE</option>
    <option value="21">21 - COTE - D'OR</option>
    <option value="22">22 - COTES D'ARMOR</option>
    <option value="23">23 - CREUSE</option>
    <option value="24">24 - DORDOGNE</option>
    <option value="25">25 - DOUBS</option>
    <option value="26">26 - DROME</option>
    <option value="27">27 - EURE</option>
    <option value="28">28 - EURE - ET - LOIR</option>
    <option value="29">29 - FINISTERE</option>
    <option value="2A">2A - CORSE du SUD</option>
    <option value="2B">2B - HAUTE CORSE</option>
    <option value="30">30 - GARD</option>
    <option value="31">31 - HAUTE - GARONNE</option>
    <option value="32">32 - GERS</option>
    <option value="33">33 - GIRONDE</option>
    <option value="34">34 - HERAULT</option>
    <option value="35">35 - ILLE - ET - VILAINE</option>
    <option value="36">36 - INDRE</option>
    <option value="37">37 - INDRE - ET - LOIRE</option>
    <option value="38">38 - ISERE</option>
    <option value="39">39 - JURA</option>
    <option value="40">40 - LANDES</option>
    <option value="41">41 - LOIR - ET - CHER</option>
    <option value="42">42 - LOIRE</option>
    <option value="43">43 - HAUTE - LOIRE</option>
    <option value="44">44 - LOIRE - ATLANTIQUE</option>
    <option value="45">45 - LOIRET</option>
    <option value="46">46 - LOT</option>
    <option value="47">47 - LOT - ET - GARONNE</option>
    <option value="48">48 - LOZERE</option>
    <option value="49">49 - MAINE et LOIRE</option>
    <option value="50">50 - MANCHE</option>
    <option value="51">51 - MARNE</option>
    <option value="52">52 - HAUTE - MARNE</option>
    <option value="53">53 - MAYENNE</option>
    <option value="54">54 - MEURTHE - ET - MOSELLE</option>
    <option value="55">55 - MEUSE</option>
    <option value="56">56 - MORBIHAN</option>
    <option value="57">57 - MOSELLE</option>
    <option value="58">58 - NIEVRE</option>
    <option value="59">59 - NORD</option>
    <option value="60">60 - OISE</option>
    <option value="61">61 - ORNE</option>
    <option value="62">62 - PAS - DE - CALAIS</option>
    <option value="63">63 - PUY - DE - DOME</option>
    <option value="64">64 - PYRENNES - ATLANTIQUES</option>
    <option value="65">65 - HAUTES - PYRENNES</option>
    <option value="66">66 - PYRENNES - ORIENTALES</option>
    <option value="67">67 - BAS - RHIN</option>
    <option value="68">68 - HAUT - RHIN</option>
    <option value="69">69 - RHONE</option>
    <option value="70">70 - HAUTE - SAONE</option>
    <option value="71">71 - SAONE - ET - LOIRE</option>
    <option value="72">72 - SARTHE</option>
    <option value="73">73 - SAVOIE</option>
    <option value="74">74 - HAUTE - SAVOIE</option>
    <option value="75">75 - PARIS</option>
    <option value="76">76 - SEINE - MARITIME</option>
    <option value="77">77 - SEINE - ET - MARNE</option>
    <option value="78">78 - YVELINES</option>
    <option value="79">79 - DEUX SEVRES</option>
    <option value="80">80 - SOMME</option>
    <option value="81">81 - TARN</option>
    <option value="82">82 - TARN - ET - GARONNE</option>
    <option value="83">83 - VAR</option>
    <option value="84">84 - VAUCLUSE</option>
    <option value="85">85 - VENDEE</option>
    <option value="86">86 - VIENNE</option>
    <option value="87">87 - HAUTE - VIENNE</option>
    <option value="88">88 - VOSGES</option>
    <option value="89">89 - YONNE</option>
    <option value="90">90 - TERRITOIRE DE BELFORT</option>
    <option value="91">91 - ESSONNE</option>
    <option value="92">92 - HAUTS - DE - SEINE</option>
    <option value="93">93 - SEINE - SAINT - DENIS</option>
    <option value="94">94 - VAL - DE - MARNE</option>
    <option value="95">95 - VAL - D'OISE</option>
    <option value="971">971 - GUADELOUPE</option>
    <option value="972">972 - MARTINIQUE</option>
    <option value="973">973 - GUYANE</option>
    <option value="974">974 - REUNION</option>
    <option value="975">975 - ST PIERRE et MIQUELON</option>
    <option value="984">984 - TERRES AUSTRALES ANTARCTIQUES</option>
    <option value="985">985 - MAYOTTE</option>
    <option value="986">986 - WALLIS ET FUTUNA</option>
    <option value="987">987 - POLYNESIE FRAN&ccedil;AISE</option>
    
    </select>
    <select id="type" name="type">
        <option value="199">PRIMAIRE</option>
        <option value="201">SECONDAIRE</option>
    </select>
    <input type="submit" onclick="generate_table()" value="Filter"><br/><br/>""")
    
    x.write('\n'+'</body>'+'\n'+'</html>')
    x.close()

def tuple_liste(tab):
    list_test = str(list(map(list, tab)))
    return (list_test)

En sachant que la fonction tuple_liste convertit le tuple en liste exploitable dans JS…

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte