2013-03-15 60 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