404 未找到(资源无法找到)- GAE 和 Datastore 的问题
我刚开始学习Python、GAE和数据存储模型,所以有很多东西我还不太懂,请多多包涵 :)
我正在做一个网络服务,允许用户发布一个物品的“名称”和“描述”,然后这些信息会显示在同一页面的表格中。但是,当我点击提交按钮时,出现了错误:404 找不到,资源无法找到。
我觉得我的代码可能有很多问题(我只包含了我认为相关的简短代码片段,以便更容易阅读),我最大的问题是我不知道哪些部分是错的,也不知道该问哪些具体的问题。不过,我希望能借这个机会多了解一下我代码中涉及的所有内容(比如Jinja、HTML、GQL等),以及如何把它们结合在一起。
class Events(ndb.Model):
name = ndb.StringProperty()
desc = ndb.StringProperty()
class Promote(webapp2.RequestHandler):
def get(self):
query = ndb.gql("SELECT * "
"FROM Events "
)
template_values = {"events" : query,}
template = jinja_environment.get_template('promote.htm')
self.response.out.write(template.render(template_values))
def post(self):
event = Events(name = self.request.get('name'), desc = self.request.get('desc'))
event.put()
self.redirect('/promote')
app = webapp2.WSGIApplication([('/', Main),
('/publicsearch', PublicSearch),
('/promote', Promote)],
debug=True)
这是我那一页的HTML代码。
<div class="jumbotron">
<div class = "container">
<form action="/promote" method="post">
<fieldset>
<div class="row-fluid">
<p> Promote your event here! </p>
<div class="row-fluid">
<div class="span6">
<p> Name of event: <br>
<textarea class="input-block-level" name="name" rows="1" cols = "50"> </textarea></p>
<p> Event description: <br>
<textarea class="input-block-level" name="desc" rows="3" cols = "50"> </textarea></p>
<p><input type="submit" value="Submit">
</div>
</div>
</div>
</div>
</div>
<h4> Events feed </h4>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th width="30%">Name</th>
<th>Description</th>
</tr>
</thead>
<tbody>
{% for event in events %}
<tr>
<td>{{ event.name }} </td>
<td>{{ event.desc }} </td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
1 个回答
2
你的表单试图发送数据到一个地址是 /wishlist
,但是你注册的唯一一个可以处理发送数据的地址是 /promote
。
这两个地址需要一致。你要么改一下表单,要么改一下处理程序的地址。
顺便检查一下你的 app.yaml
文件,看看里面的设置是否正确。同时查看一下日志,你会看到请求的是哪个地址。