我是Python,GAE和数据存储模型的新手。所以有很多我还不知道的事情,所以请耐心等待:)。
我正在开发一项网络服务,允许人们发布项目的“名称”和“描述”(描述),它将包含在同一页面的表格中。但是,当我单击提交按钮时,我收到错误:404 Not Found,找不到资源。
我期待在下面显示的代码中出现很多错误(我只包含我的代码的简短片段,我认为这些代码与使阅读更容易相关),而我最大的问题是我不知道哪个部件是错误的或要问的具体问题。但是我希望我能利用这个机会更多地了解我的代码(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>
答案 0 :(得分:1)
您的表单正在尝试使用/wishlist
的网址发布到处理程序,但是您注册的POST方法的唯一处理程序是/promote
。
这些东西需要匹配。更改表单或处理程序映射。
同时,当您处于此状态时,请检查您的app.yaml
是否合理。在您看到日志的同时查看日志,您将看到正在请求的URL。