1
文字列のrot13コードを出力するために次のコードを記述しました。 Rot13コードは、文字列の文字を13か所分シフトします。しかし何らかの理由で、印刷されたテキストボックスは常に空白です。誰かがこのコードで私を助けてくれますか?Web開発者のためのpythonプログラムの最終出力を取得していません
を使用できimport os
import webapp2
import jinja2
import cgi
import string
template_dir= os.path.join(os.path.dirname(__file__), 'templates')
jinja_env= jinja2.Environment(loader= jinja2.FileSystemLoader(template_dir),
autoescape= True) # automatically escapes all the variables
form="""
<form method="post">
<textarea name="text" style="height: 100px; width: 400px;">%(val)s</textarea>
<br>
<input type="submit">
</form>
"""
class Handler(webapp2.RequestHandler):
def write(self,*a,**kw):
self.response.out.write(*a,**kw)
def render_str(self,template,**params):
#Causes Jinja to load that file creating jinja template
t=jinja_env.get_template(template)
return t.render(params)
def render(self,template,**kw):
self.write(self.render_str(template,**kw))
class MainPage(webapp2.RequestHandler):
def escape_html(self,s):
return cgi.escape(s, quote=True)
def write_form(self, s=''):
self.response.out.write(form % {"val":s})
def get(self):
self.write_form()
def rot13(self, s):
out=""
str1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
str2 = "NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm"
for c in s:
if c in str1:
k = str1.index(c)
out += string.replace(s,c, str2[k])
else:
out += c
return out
def post(self):
user_text = self.request.get('text')
user_text = self.escape_html(user_text)
user_text = self.rot13(user_text)
self.write_form(user_text)
app = webapp2.WSGIApplication([
('/', MainPage)
], debug=True)
どうもありがとうございました。これが私の仕事でした。しかし、自分のコードに何が間違っているのか理解できませんでした。あなたもそれで私を助けてくれますか? –
あなたのルーチンを使用したい場合は、@Taylorを確認してください。問題はout + = string.replace(s、c、str2 [k])です。 + = str2 [k]の変換を連結する必要があります。必要に応じて、コードに変更を加えることができます。 –
ありがとう@ニコラス!これは本当にとても役に立ちました! –