我正在尝试了解如何编辑或更新模型。我尝试了几种有时会给出错误消息的场景: 405 Method Not Allowed - 该资源不允许使用 POST 方法。下面是我的代码:
Python 模型:
import os 
import webapp2
import wsgiref.handlers
from google.appengine.ext import db
from google.appengine.ext.webapp import template
class MessageModel(db.Model):
    content = db.StringProperty(multiline=True)
    date = db.DateTimeProperty(auto_now_add=True)
class Message(webapp2.RequestHandler):
    def get(self):
        doRender(self,'message.htm')
    def post(self):
        m = MessageModel()
        m.content = self.request.get('content')
        m.put()
        self.redirect('/view') 
class View(webapp2.RequestHandler):
    def get(self):
        que = db.Query(MessageModel)
        messageview_list = que.fetch(999)
        doRender(self,
                 'view.htm', 
                 {'messageview_list': messageview_list })
class Edit(webapp2.RequestHandler):
    def get(self):
        doRender(self,'edit.htm')    
    def post(self):
        updated_content = self.request.get('content')
        content_query = db.GqlQuery("SELECT * "
                                   "FROM MessageModel "
                                   "ORDER BY date DESC LIMIT 1")
        messageview_list = content_query.fetch(1)
        m = MessageModel()
        m.content = self.request.get(updated_content)
        m.put()
        doRender(self,
                 'edit.htm', 
                 {'messageview_list': messageview_list })
class Main(webapp2.RequestHandler):
    def get(self):
        doRender(self,'index.htm')
def doRender(handler, tname = 'index.htm', values = { }):
    temp = os.path.join(
    os.path.dirname(__file__),
    'templates/' + tname)
    if not os.path.isfile(temp):
    return False
    newval = dict(values)
    newval['path'] = handler.request.path
    outstr = template.render(temp, newval)
    handler.response.out.write(outstr)
    return True
app = webapp2.WSGIApplication([('/', Main),
                   ('/message', Message),
                   ('/view', View),                                                                          
                   ('/edit', Edit)], 
                   debug=True)
HTML 表单:
{% for messageview in messageview_list %}
<form method="post" action="/edit">
    <p>
        <textarea name="message" rows="3" cols="60" MAXLENGTH=60>
        {{ messageview.content }}</textarea>
        <br>
        <input type="submit" value="Update"/> 
      </p>
</form>
      {% ifnotequal error None %}
       <p>
       {{ error }}
       </p>
      {% endifnotequal %}
{% endfor %}