嗨幾周以來,我在玩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) 我的代碼缺少適當的方式來路由實體。 –