2012-07-11 2 views
1

내가 파이썬을 사용하여 Google 앱 엔진에서 작업이 기능을 얻으려고로 전환하지 :는 문자열

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 사용하고 있습니다)이 오류를 얻을 :

형식 오류를 : 유니 코드로 강제 변환 : long string 또는 버퍼가 필요합니다.

varID가 실제로 숫자를 반환하는지 테스트했지만 변환 할 필요가없는 것 같아요. 내 인용 부호가 순서에 있음을 압니다. 게다가. 어떤 도움을 주시면 감사하겠습니다.

+0

라인은 무엇입니까? 일반적으로 전체 추적을 게시하면 이러한 상황에서 유용합니다. – mgilson

답변

2

variable.year이 문자열인지 확인하거나 변환하십시오.

0

문자열을 문자열과 연결할 때 Python은 자동으로 숫자를 문자열로 포맷하지 않습니다. 이는 의도적 인 디자인 선택입니다. 파이썬의 기본 원칙 중 하나 인 "명시 적이 암시 적보다 낫습니다"의 결과입니다.

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

이 더 나은 방법을 다시 대신 문자열을 직접 보간의 템플릿 시스템을 사용하는 것입니다 : 당신은 str(num)와 수 있지만,이 같은 전역 문자열 서식을 사용하는 것이 할 수있는 더 좋은 방법을 변환 할 수 있습니다. 이런 식으로 일을하는 XSS 오류가 발생할 위험이 높아지고 코드의 읽기가 훨씬 어려워집니다.