【发布时间】:2017-11-10 12:42:46
【问题描述】:
我编写了以下代码来打印字符串的 rot13 代码。 Rot13 代码是将字符串的字母移动 13 位的地方。但是由于某种原因,打印的文本框总是空白的。有人可以帮我处理这段代码吗?
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)
【问题讨论】:
标签: python python-2.7 jinja2 google-app-engine-python