1

Pythonを使用してこの関数をGoogleAppEngineで動作させようとしています。

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が実際に数値を返していることを確認するためにテストしましたが、それでも変換したくないようで、引用符も正しいことを知っています。どんな助けでもいただければ幸いです。

4

2 に答える 2

2

が文字列であることを確認variable.yearするか、それも変換してください。

于 2012-07-11T15:52:06.897 に答える
0

Python は、文字列を文字列と連結しようとしたときに、数値を文字列として自動的にフォーマットしません。これは、Python の基本原則の 1 つである「明示的は暗黙的よりも優れている」という意図的な設計上の選択です。で数値を変換できますがstr(num)、これを行うより良い方法は、次のように全体で文字列の書式設定を使用することです。

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

より良いアプローチは、文字列を自分で補間する代わりに、テンプレート システムを使用することです。この方法で XSS エラーが発生するリスクは高く、コードの可読性は大幅に低下します。

于 2012-07-23T06:26:59.487 に答える