python - 为什么这段代码会得到 this 'str' object has no attribute 'get_match_routes' 错误?

标签 python html google-app-engine

我正在尝试使用 Google App Engine 构建一个(新手)应用程序,但是当我运行它时,我发现了这个我不理解的(日志)错误:

 File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2\webapp2.py", line 1479, in __init__
    self.router = self.router_class(routes)
  File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2\webapp2.py", line 1129, in __init__
    self.add(route)
  File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2\webapp2.py", line 1142, in add
    for r in route.get_match_routes():
AttributeError: 'str' object has no attribute 'get_match_routes'
INFO     2012-04-29 14:42:34,056 dev_appserver.py:2891] "GET / HTTP/1.1" 500 -

完整代码如下。有人能找出这个错误的原因以及我该如何解决吗? 在此先感谢您的帮助!

import webapp2

form = """

<html>
 <head>
<title>Sign Up</title>
<style type="text/css">
  .label {text-align: right}
  .error {color: red}
</style>

  </head>

  <body>
    <h2>Signup</h2>
<form method="post">
  <table>
    <tr>
      <td class="label">
        Username
      </td>
      <td>
        <input type="text" name="username" value="">
      </td>
      <td class="error">

      </td>
    </tr>

    <tr>
      <td class="label">
        Password
      </td>
      <td>
        <input type="password" name="password" value="">
      </td>
      <td class="error">

      </td>
    </tr>

    <tr>
      <td class="label">
        Verify Password
      </td>
      <td>
        <input type="password" name="verify" value="">
      </td>
      <td class="error">

      </td>
    </tr>

    <tr>
      <td class="label">
        Email (optional)
      </td>
      <td>
        <input type="text" name="email" value="">
      </td>
      <td class="error">

      </td>
    </tr>
  </table>

  <input type="submit">
</form>
 </body>

</html>
"""

welcome = """
<html>
  <head>
    <title>Unit 2 Signup</title>
  </head>

  <body>
    <h2>Welcome, %(username)s!</h2>
  </body>
</html>
"""
import re

USER_RE = re.compile(r"^[a-zA-Z0-9_-]{3,20}$")
def valid_username(username):
    return USER_RE.match(username)

PASS_RE = re.compile(r"^.{3,20}$")
def valid_password(password):
    return PASS_RE.match(password)

EMAIL_RE = re.compile(r"^[\S]+@[\S]+\.[\S]+$")
def valid_email(email):
    return EMAIL_RE.match(email)

class MainHandler(webapp2.RequestHandler):
    def get(self):
       self.response.out.write(form)

    def write_form(self, text_write):
       self.response.out.write(form) 

    def post(self):
        user_name = self.request.get("username")
        user_pass = self.request.get('password')
        user_verify = self.request.get('verify')

        err_username = ""
        if not valid_username(user_name):
            err_username = "Oh no!!! Username isn't valid!"
        err_pass = ""
        if not valid_pass(user_pass):
            err_pass = "Oh no!!! password isn't valid!"
        err_verify = ""
        if user_pass != user_verify:
            err_verify = "Oh no!!! password verification didn't check!"

class WelcomeHandler(webapp2.RequestHandler):
    def get(self):
        self.response.out.write(welcome)

app = webapp2.WSGIApplication([('/', MainHandler), '/welcome', WelcomeHandler],
                          debug=True)

最佳答案

修复你的路由定义:

app = webapp2.WSGIApplication([(r'/', MainHandler),
                               (r'/welcome', WelcomeHandler)],
                               debug=True)

同时检查 webapp2 routing extended对于更高级的东西。

关于python - 为什么这段代码会得到 this 'str' object has no attribute 'get_match_routes' 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10373309/

相关文章:

python - 如何在 python 中连接/断开连接/配置无线网络?

python - OpenCV 3.0 Beta-Python-通过网络摄像头进行人脸检测-代码给我错误

python - 尝试在未配置 API 客户端的情况下使用服务客户端工厂

Python Pandas Dataframe 日期时间列分隔函数

javascript - 将随机生成的绝对 div 定位为网格的最佳方法?

javascript - 如何突出显示 Flexslider 轮播中的事件幻灯片?

javascript - 使用 vanilla JS 开 Jest - 在 DOM 上测试生成的元素

python - 标准 App Engine 项目错误地部署为灵活项目

java - SINGLE_TABLE 的 JPA 继承替代方案?

php - 在 GAE 之外的 PHP 中复制 Google App Engine app.yaml 处理程序