2017-07-19 1 views
0

ich eine HTML-Datei, die eine index.html haben mySQL Tabelle zeigt:aus einem einzelnen Element hinzuzufügen versucht, für Schleife in einem Array in JavaScript

<body> 

    <div class="container"> 
    <table align="center"> 
     <tr> 
      <th bgcolor="#f0a00c">Col1</th> 
      <th bgcolor="#f0a00c">Col2</th> 
      <th bgcolor="#f0a00c">Col3</th> 
      <th bgcolor="#f0a00c">Col4</th> 
      <th bgcolor="#f0a00c">Col5</th> 
     </tr> 
     {% for b in obj %} 
     <tr> 
      <td>{{ b.col1 }}</td> 
      <td>{{ b.col2 }}</td> 
      <td>{{ b.col3 }}</td> 
      <td>{{ b.col4 }}</td> 
      <td>{{ b.col5 }}</td> 
     </tr> 
    {% endfor %} 

    </table> 
    </div> <!-- /container --> 
    </body> 

Ich möchte von b.col2 & b.col3 in separate jeden Wert setzen Listen. Also, ich versuche es wie folgt hinzufügen:

{% for b in obj 
var c1 = []; 
c1.push(b.col1); 
var c2 = []; 
c2.push(b.col2); 
%} 

Aber es funktioniert nicht. Was ist der richtige Weg?

UPDATE:

def display(request): 
    find_duplicate() 
    return render_to_response('index.html', {'obj': my_model.objects.order_by('id')}) 

def get_dict(): 
    d={} 
    for e in my_model.objects.all(): 
     col2 = e.col2 
     col3 = e.col3 
     col2 = unicode(col2).encode('UTF8') 
     col3 = unicode(col3).encode('UTF8') 
     d.setdefault(col2, []) 
     d[col2].append(col3) 
    del d[''] 
    return d 

def find_duplicate(): 
    #print(d) 
    d = get_dict() 
    for k,v in d.items(): 
     if len(v) > 1: 
      name=[] 
      id=[] 
      #print(k) 
      for i in v: 
       #print(i) 
       reg1 = i.split("(")[0] 
       name.append(reg1) 
       reg2 = re.search(r'[A-Z0-9]*', i.split("_")[1]) 
       id.append(reg2.group()) 
      #print(name) 
      #print(id) 

So ist der Tisch das sieht aus wie:

Das ist mein views.py ist

Number | NameAndId 
1  | Name1(something_1234) 
1  | Name2(something_3456) 
2  | Name3(something_7890) 
2  | Name4(something_0988) 

So ist die Ausgabe des Wörterbuch d ist:

{'1': ['Name1(something_1234)', 'Name2(something_3456)'], '2': 'Name3(something_7890)', 'Name4(something_0988)']} 

Und dann analysiert es die col2 in der find_duplicate Funktion:

so print(name) in dieser Funktion werden die Namen und IDs für jeden Schlüssel (num) heißt ['Name1', 'Name2'] & ['1234', '3456'] für Schlüssel 1 geben. Also, ich möchte etwas CSS-Stil auf den Namen und den ID-Teil für jeden Schlüssel anwenden. Also, wie die Ergebnisse von der find_duplicate() Funktion an den HTML übergeben?

+0

Ich glaube, es ist Javascript. Ich habe so eine Tabelle aus einem Tutorial – akrama81

+0

angezeigt, die nicht native Javascript ist. Kannst du mit dem Tutorial verlinken? Bearbeiten - es sieht so aus, als könnte es Django sein? https://docs.djangoproject.com/en/1.9/ref/templates/language/ – sauntimo

+1

Ich denke, es ist Django. –

Antwort

0

Es sieht aus wie Sie versuchen, JavaScript-Listen enthalten, diese Elemente zu erstellen, können Sie diese Schnipsel verwenden könnten zwei Javascript-Listen erstellen enthält die Werte von b.col2 enthält und b.col3

<body> 

    <div class="container"> 
     <table align="center"> 
      <tr> 
       <th bgcolor="#f0a00c">Col1</th> 
       <th bgcolor="#f0a00c">Col2</th> 
       <th bgcolor="#f0a00c">Col3</th> 
       <th bgcolor="#f0a00c">Col4</th> 
       <th bgcolor="#f0a00c">Col5</th> 
      </tr> 
      {% for b in obj %} 
      <tr> 
       <td>{{ b.col1 }}</td> 
       <td>{{ b.col2 }}</td> 
       <td>{{ b.col3 }}</td> 
       <td>{{ b.col4 }}</td> 
       <td>{{ b.col5 }}</td> 
      </tr> 
      {% endfor %} 

      </table> 
    </div> <!-- /container --> 

    <script> 
     var c2 = [], c3 = []; 
     {% for b in obj %} 
     c2.push("{{ b.col2 }}"); 
     c3.push("{{ b.col3 }}"); 
     {% endfor %} 
     console.log([c2, c3]); 
     // ... Do what you need to do in javascript with these lists. 
    </script> 
</body> 
+0

Süß! Es funktionierte. Danke vielmals. – akrama81

Verwandte Themen