2013-03-15 97 views
2

如何在html中顯示python變量的值(在這種情況下,它是我的Entity類的關鍵)?在HTML中顯示Python值

from google.appengine.ext import db 

class Entity(db.Expando): 
    pass 

e = Entity()  
e.put()   # id is assigned 
k = e.key()  # key is complete 
id = k.id()  # system assigned id 

html=''' 
<html> 
    <head></head> 
    <body> 
     <label>Key: %(k) </label> 
     <br>    
    </body> 
</html> 
''' 
+3

見https://developers.google.com/appengine/docs/python/gettingstarted/handlingforms – user1929959 2013-03-15 14:34:03

回答

5
from google.appengine.ext import db 
import cgi 

class Entity(db.Expando): 
    pass 

e = Entity()  
e.put()   # id is assigned 
k = e.key()  # key is complete 
id = k.id()  # system assigned id 

html=""" 
<html> 
    <head></head> 
    <body> 
     <label>Key: %s </label> 
     <br>    
    </body> 
</html>""" % (cgi.escape(k)) 

我會認真地建議你使用模板,儘管它會讓你的生活變得更容易。

與模板的解決辦法是這樣的:

class Entity(db.Expando): 
pass 

e = Entity()  
e.put()   # id is assigned 
k = e.key()  # key is complete 
id = k.id()  # system assigned id 

template = jinja_environment.get_template('templates/myTemplate') 
self.response.write(template.render({'key_val':k})) 

和Mytemplate.html文件看起來像:

<html> 
    <head></head> 
    <body> 
    <label>{{key_val}}</label> 
    <br>    
    </body> 
</html> 
+0

+1感謝您的回覆和建議。我會學習和使用jinja2。但是因爲我對Python和GAE都很陌生,所以我認爲將html粘貼到python腳本中可能會更簡單。 – Anthony 2013-03-15 15:12:10

+0

+1我的天啊,非常感謝! – Anthony 2013-03-15 16:19:47

3

我不知道很多關於谷歌應用程序引擎,但在Python中,有兩種方式:

html=''' 
<html> 
    <head></head> 
    <body> 
     <label>Key: %(k)s </label> 
     <br>    
    </body> 
</html> 
''' % locals() # Substitude %(k)s for your variable k 

二:

html=''' 
<html> 
    <head></head> 
    <body> 
     <label>Key: {0[k]} </label> 
     <br>    
    </body> 
</html> 
'''.format(locals()) 

其實,還有第三條道路,我更喜歡它,因爲它是明確的:

html=''' 
<html> 
    <head></head> 
    <body> 
     <label>Key: {0} </label> 
     <br>    
    </body> 
</html> 
'''.format(k) 
+1

尼斯optons - 又見一個下面顯示如何顯式轉義HTML值以防止跨站腳本攻擊。 – 2013-03-15 15:01:53

+0

+1哇,謝謝你的三個選擇。我正在嘗試他們! – Anthony 2013-03-15 15:12:59

1

你直接輸出可能是:

<label>Key: {{k}} </label> 

首先看看一個基本的Django模板

getting started with templates

然後可能有一個看的Jinja2

jinja2 templates

+0

+1謝謝你推薦django和jinja2模板和有用的鏈接! – Anthony 2013-03-15 15:14:58