嗨几周以来,我在玩webapp2和Python。简而言之,我进入了路由主题。 我发现一个有帮助的link,给出了一个想法如何可以完成路由......不知何故在我的项目中,我正在努力与此没有任何成功的景象。webapp2 CRUD路由返回405
基本上我想要做的就是添加国家,然后在链接/国家/ country_id(国家ID应该是iso3)时单独查看每个国家/地区,以便以后能够更新其属性jQuery的xeditable或删除它们。更好地称为CRUD
我可以在这里得到任何帮助吗?这可能是一个非常愚蠢的解决方案......我的大脑并没有得到它的权利...... :-(
我不断收到这样的:
INFO 2015年4月6日15:33:49839 module.py :737]默认: “GET/HTTP/1.1” 405 187
这里是我的处理代码:
class HomePage(BaseRequestHandler):
def get(self):
self.render_template('index.html')
class CountriesHandler(BaseRequestHandler):
def create(self):
"""I want to get this from https://github.com/mledoze/countries
Could this be possible to get it from json...? to be researched
"""
country_key = ndb.Key(Country, self.request.get('ccn3'))
country = Country((country_key),
name = self.request.get('name'),
ccn3 = self.request.get('ccn3'),
region = self.request.get('region'),
)
country.put()
"""I might be doing wrong here..."""
self.redirect('/countries/country')
self.render_template('add_country.html')
def list(self, country_key):
self.render_template('list.html')
def view(self, country_key):
"""I think I have to do something here to get thinks to work with routing
"""
self.render_template('country.html')
def update(self, ndb_key):
"""This should update one single field"""
if type(ndb_key) is ndb.key.Key:
key = ndb_key
else:
key = ndb.Key(urlsafe=ndb_key)
item = key.get()
item.self.request.get('value')
item.put()
def delete(self, ndb_key):
"""This should delete an entity"""
if type(ndb_key) is ndb.key.Key:
key = ndb_key
else:
key = ndb.Key(urlsafe=ndb_key)
key.delete()
这里是我的路由器代码:
"""Here i get always confused which one I should use and how I should use"""
_route_info = [
('Main', 'GET', '/', HomePage, 'home'),
('country.list', 'GET', '/countries/', CountriesHandler, 'list'),
('country.create', None, '/countries/create/', CountriesHandler, 'create'),
('country.view', 'GET', '/countries/<id:\d+>/', CountriesHandler, 'view'),
('country.delete', None, '/countries/<id:\d+>/delete/', CountriesHandler, 'delete'),
('country.update', None, '/countries/<id:\d+>/update/', CountriesHandler, 'update'),
]
更新1:
我改变了一下代码。 但仍然收到相同的错误:
class CountriesHandler(BaseRequestHandler):
def create(self):
if self.request.method == 'POST':
country_key = ndb.Key(Country, self.request.get('ccn3'))
country = Country((country_key),
name = self.request.get('name'),
ccn3 = self.request.get('ccn3'),
region = self.request.get('region'),
)
country.put()
return self.redirect(self.uri_for('country.view'))
else:
return self.render_template('putcountry.html')
谢谢,它帮助我部分。其余我从这里得到:[链接](https://github.com/5aket/cpfthw/blob/master/webapp2/views.py) 我的代码缺少适当的方式来路由实体。 –