2017-02-11 5 views
0

Die folgenden 2 js-Funktionen können eine Schaltfläche zu und von der deaktivierten Klasse umschalten. Ich möchte, dass der deaktivierte Zustand von der globalen Variable filelength im Python-Code abhängt, aber ich kann mir keinen einfachen Weg dazu vorstellen. Die einzige Möglichkeit, die mir einfällt, ist, zwei identische, aber separate Vorlagen zu haben, eine mit deaktivierter Schaltfläche und eine mit dieser Option.JavaScript-Funktion auslösen basierend auf Python-Variablenwert

<script type="text/javascript" language="JavaScript"> 
    function enableButton(button){ 
    document.getElementById(button).removeAttribute('class'); 
     document.getElementById(button).setAttribute("class", "button"); 
    } 
    function disableButton(button){ 
     document.getElementById(button).setAttribute("class", "disabled"); 
    } 
    </script> 

ich soll die Funktionen für das folgende index.html Schablonenelement verwenden.

<button id="Test" class="button disabled" > 
Test 
</button> 

Die beabsichtigte Hin- und Herschalten würde folgende alt.html Schablonenelement erzeugen, welche die „disabled“ elides.

<button id="Test" class="button" > 
Test 
</button> 

Es scheint dumm 2 separate Vorlagen zu erfordern (index.html und alt.html) umschalten zu erreichen, aber ich kann eine Alternative, die nicht denkt, dass ich nur erlaubt, index.html zu verändern. Anfangs dachte ich, dass jinja2 die benötigte Funktionalität bereitstellen würde, aber das scheint nicht korrekt zu sein.

Wie kann ich dies ohne eine zweite Vorlage mit Python und GAE erreichen?

Für weitere Vollständigkeit, unten zeige ich den relevanten Status meiner Python-Anwendung als nächstes.

import os 
import jinja2 
import webapp2 
import urllib 

filelength = 0 

class MainPage(BaseHandler): 

    def get(self): 
    global filelength 
    logging.info("text length in Main get: %s " % filelength) 
    template_values = {'filelength':filelength} 
     template = JINJA_ENVIRONMENT.get_template('index.html') 
     self.response.out.write(template.render(template_values)) 

    def post(self): 
    global filelength 
    url = self.request.get('URL', None) 
    text = urllib.urlopen(url).read() 
    logging.info("text length in Main post: %s " % len(text)) 
    filelength = len(text) 
    if filelength > 0: 
     return webapp2.redirect('/alt') 
    else: 
     return webapp2.redirect('/') 

class AltMainPage(BaseHandler): 

    def get(self): 
    global filelength 
    logging.info("text length in Alt get: %s " % filelength) 
    template_values = {'filelength':filelength} 
     template = JINJA_ENVIRONMENT.get_template('alt.html') 
     self.response.out.write(template.render(template_values)) 

    def post(self): 
    global filelength 
    url = self.request.get('URL', None) 
    text = urllib.urlopen(url).read() 
    logging.info("text length in Alt post: %s " % len(text)) 
    if filelength > 0: 
     return webapp2.redirect('/alt') 
    else: 
     return webapp2.redirect('/') 
    return webapp2.redirect('/') 

app = webapp2.WSGIApplication([ 
     ('/', MainPage), 
     ('/alt', AltMainPage), 
     ], 
     debug=True) 

Antwort

0

In der Vorlage index.html einfach jinja2 verwenden, um die Klasse Attribut wie folgt zu definieren, wo der Wert von buttonclass entweder als button oder button disabled in Python definiert ist, mit dem „if ... else“ konstruieren.

<button id="Test" class="{{ buttonclass }} " > 
Test 
</button> 
Verwandte Themen