2017-12-30 21 views
1

Ich erstelle einen Web-Shop mit HTML und Bottle (Python). Ich weiß, wie man Daten zwischen HTML und Python weitergibt, sowie wie man Python Code innerhalb HTML schreibt (Referenz: http://karrigell.sourceforge.net/en/pythoninsidehtml.html).Kombinieren von Python-Code in HTML mit Variablen

Was ich damit zu kämpfen habe, schreibt Python Code innerhalb der Referenz, die von HTML zu Python übergeben wird.

Ich lade Bilder aus einer Datenbank, da ich viele davon habe. Ich gesetzt und die Variablen übergeben image_name(index)-HTML wie folgt aus:

@get('/store') 
def showStore(): 
    images = models.images() # reads from database 
    data = ', number_of_images={}'.format(len(images)) 

    for (id, title, path) in images: 
     data += ', image_name{}={}, '.format(id, path) 
     data += 'image_title{}={}'.format(id, title) 

    return template('store.html' + data) 

Der entsprechende Teil des store.html:

<!-- Portfolio Gallery Grid --> 

<div class="row"> 
    <% for i in range(1, number_of_images+1): %> 
     <div class="column"> 
     <div class="content"> 
      <img src="static/images/{{image_name<%i%>}}.jpg"> 
      <h3> {{image_title<%i%>}} </h3> 
     </div> 
     </div> 
    <% end %> 
</div> 

Da Bottle ist nicht bekannt: {{image_title}} in HTML den Wert in aus den übergebenen bekommt template (html, variables). Block <% %> ermöglicht es Ihnen, Python Code darin zu schreiben.

Alles richtig funktionierte, wenn ich nicht die Indizierung von Bildeigenschaften innerhalb der HTML verwendet habe, so HTML und die for loop Arbeit tun, ist das Problem mit diesem Teil:

{{image_title<%i%>}} 

<%i%> sollte meiner Meinung nach schaffen Variable image_titleich aber anscheinend tut es nicht.

Ich bekomme einen template not found Fehler, wahrscheinlich, weil die Variablen, die ich übergebe (von der .py Datei) nicht in der HTML existieren.

Der Grund, warum ich das sehr gerne dynamisch machen würde, anstatt jedes Bild hart zu kodieren, ist, dass ich viele dieser Bilder habe und jedes Bild eine ganze Tabelle relevanter Daten hat, die ich hier nicht finden würde genauso wie Name und Titel des Bildes.

ich Hilfe mit der richtigen Kombination von Python innerhalb HTML mit Variablen übergeben schätzen würde, da ich es wirklich dynamisch

Antwort

4

Es gibt hier falsch eine ziemlich große Anzahl von Dingen tun wollen.

Ihre Vorlage nicht gefunden Fehler ist eigentlich nichts mit den seltsamen Manipulationen, die Sie in dieser Vorlage tun. Das liegt daran, dass Sie den Vorlagennamen mit der Zeichenfolge data in Ihrem Aufruf an template() in der letzten Zeile Ihres Python-Codes verketten. Ich weiß nicht, Flasche, aber ich bin absolut positiv die Daten ein zweiter Parameter zu dieser Funktion sein muss:

return template('store.html', data) 

Was den Rest angeht, gibt es absolut keine Notwendigkeit, etwas zu tun, dass Sie es tun. Übergeben Sie einfach die Bilder als Liste, und durchlaufen Sie diese Liste in den Vorlagen. Dynamische Variablen sind immer eine schlechte Idee, und das gilt genauso für Vorlagen als für Standard-Python-Code.

(Beachten Sie, dass Sie nicht einmal dynamische Variablen erstellen; Sie haben nur eine einzige Zeichenfolge, die so formatiert ist, dass sie wie eine Gruppe von Variablenzuweisungen aussieht. Aber dadurch werden keine Variablen zugewiesen.)

+0

Mir ist nicht klar, dass ich nur die Liste selbst weitergeben kann, danke :) – Larisa

Verwandte Themen