2012-05-01 3 views
0

저는 파이썬을 처음 접했고 가장 좋은 방법은 부울에 의해 결정된 부분이 삽입 된 문자열을 포맷하는 것입니다.파이썬 : 문자열 형식을 부울로 결정 하시겠습니까?

오류 메시지가 포함될 수있는 긴 html 양식 문자열이 있습니다.

form = """Signup 
    <form method="post"> 
     <table> 
     <tr> 
      <td class="label"> 
      Username 
      </td> 
      <td> 
      <input type="text" name="username" value="%(un)s"> 
      </td> 
      <td class="error"> 
       %(un_err)s 
      </td> 
     </tr> 
     ............ 

    </form>""" 

를 내가이이 포스트 호출 처리하고 때 :

self.response.out.write(form % {"un": username, "pw": password, "pwv": validate, "email": email, "un_err": "", "pw_err": "", "verify_err": "", "email_err": ""}) 

각 "..._ ERR을 나는 단지 제대로 확인하지 않은 형태의 그 부분에 대한 오류 메시지를 표시 할 "메시지가 별도의 부울에 의해 결정된다, 예를 들어, valid_username가 false 인 경우, 출력은 다음과 같아야합니다

self.response.out.write(form % {"un": username, "pw": password, "pwv": validate, "email": email, "un_err": "This is not a valid username", "pw_err": "", "verify_err": "", "email_err": ""}) 

이 할 수있는 좋은 방법이 있나요?

답변

1
un_err_map = { 
    True: "", 
    False: "This is not a valid username" 
} 

... 

self.response.out.write(form % {"un": username, "pw": password, "pwv": validate, "email": email, "un_err": un_err_map[valid_username], "pw_err": "", "verify_err": "", "email_err": ""}) 
1

사용이 구문 :

"un_err": "" if valid_username else "This is not a valid username", ... 

그것은 당신이 함수로 만들 수하는 느낌이 경우 다음

def bool_it(var, s): 
    return "" if var else s 

과 :

"un_err": bool_it(valid_username, "This is not a valid username") 
2

당신에게 ' 템플리트 시스템으로 이동하는 시점에 도달했습니다. 나는 유익 할 것이다. Django 및 Jinja2 템플릿을 지원하는 Google AppEngine을 사용하고있는 것 같습니다. documentation에서 AppEngine의 특정 통합에 대한 자세한 정보를 찾을 수 있습니다.

목표를 쉽게 달성 할 수있는 Jinja2 템플릿을 권장합니다. 템플릿이 같은 것을 포함 할 수있다 :

template = jinja_environment.get_template('signup_form.html') 
self.response.out.write(template.render(template_values)) 
:

<form method="post"> 
    <table> 
    <tr> 
     <td class="label"> 
     Username 
     </td> 
     <td> 
     <input type="text" name="username" value="%(un)s"> 
     </td> 
     <td class="error"> 
     {% if un_err %} 
      {{ un_err }} 
     {% endif %} 
     </td> 
    </tr> 
    ... 
    </table> 
</form> 

그리고 당신은 당신이 비슷한 일을 할 수있을 것입니다 렌더링 페이지를 처리 ​​할 때

관련 문제