Long不转换为字符串

2024-09-30 01:32:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用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:需要字符串或缓冲区,已找到long

我已经测试了varID是否实际返回了一个数字,但它似乎仍然不想转换,而且我知道我的引号也是正确的。任何帮助都将不胜感激。在


Tags: 函数nameidappgetbydefgoogle
2条回答

当您尝试将一个字符串与一个字符串连接时,Python不会自动将数字格式化为字符串。作为一个明确的指导原则,“这比一个明确的设计原则更好”。您可以使用str(num)转换数字,但更好的方法是始终使用字符串格式,如下所示:

textarea = "<tr><td>%s</td><td>%d</td><td><textarea id='textarea' name='qtext_%d'>" % (variable.name, variable.year, varID)

更好的方法是使用模板系统,而不是自己插入字符串。这样做会引入XSS错误的风险很高,而且代码的可读性也会降低很多。在

确保variable.year是一个字符串,或者也转换它。在

相关问题 更多 >

    热门问题