0
以下2個js函數可以切換與禁用類的按鈕。我希望禁用狀態依賴於Python代碼中的全局變量filelength
,但不能想到這樣做的簡單方法。我能想到的唯一方法是擁有2個完全相同但獨立的模板,其中一個禁用按鈕,另一個模板啓用。基於python變量值的觸發器javascript函數
<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>
我打算使用下列index.html
模板元素的功能。
<button id="Test" class="button disabled" >
Test
</button>
預期的反覆將產生其中elides的「禁用」以下alt.html
模板元素。
<button id="Test" class="button" >
Test
</button>
看來愚蠢需要2個獨立的模板(index.html,然後alt.html)來完成這個切換,但我不認爲允許我只是改變index.html
替代的。起初我以爲jinja2會提供所需的功能,但這似乎不正確。
如何在沒有使用python和GAE的第二個模板的情況下完成此操作?
爲了更加完整,下面我將展示我的python應用程序的相關狀態。
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)