我正在尝试使用Python在Google App Engine中使用此功能:
def textarea(id):
variable = brfsscodegenerator.Variable.get_by_id(int(id))
varID = variable.key().id()
textarea = ("<tr><td>" + variable.name + "</td><td>" + variable.year +
"</td><td><textarea id='textarea' name='qtext_" + str(varID) + "'>" )
return textarea
但是我得到了这个错误(我正在使用CherryPy):
TypeError:强制转换为Unicode:需要字符串或缓冲区,找不到
我已经测试过看到varID实际上是返回一个数字,但它似乎仍然不想转换,我知道我的引号也是有序的。任何帮助将不胜感激。
答案 0 :(得分:2)
确保variable.year
是字符串或将其转换。
答案 1 :(得分:0)
当您尝试将字符串与一个字符串连接时,Python不会自动将数字格式化为字符串。这是一个深思熟虑的设计选择,因为Python的指导原则之一,&#34;显式优于隐式&#34;。您可以使用str(num)
转换数字,但更好的方法是使用整个字符串格式,如下所示:
textarea = "<tr><td>%s</td><td>%d</td><td><textarea id='textarea' name='qtext_%d'>" % (variable.name, variable.year, varID)
更好的方法是使用模板系统而不是自己插入字符串。以这种方式引入XSS错误的风险很高,而且您的代码的可读性要低得多。