2016-03-13 7 views
0

Я знаю, что есть тонна этих вопросов, и я провел часы, проходя через них и пытаясь понять это, но я не могу найти проблему. Мой main.py выглядит следующим образом:405 Метод не разрешен. Получить запрос в Google App Engine, язык Python

import webapp2 
from google.appengine.api import oauth 

app = webapp2.WSGIApplication([ 
    ('/org', 'org.Organization'), 
], debug=True) 
app.router.add(webapp2.Route(r'/org/<id:[0-9]+><:/?>', 'org.Organization')) 
app.router.add(webapp2.Route(r'/org/search', 'org.OrgSearch')) 
app.router.add(webapp2.Route(r'/resources', 'resources.Resource')) 
app.router.add(webapp2.Route(r'/resources/<rid:[0-9]+>/org/<oid:[0-9]+><:/?>', 'resources.ResourceOrgs')) 

И код для моего запроса GET и поста выглядит следующим образом: импорт webapp2 из google.appengine.ext импорта ОПРСА импорта Dbase импорта JSon

class Organization(webapp2.RequestHandler): 
def post(self): 
    if 'application/json' not in self.request.accept: 
     self.response.status = 406 
     self.response.status_message = "API only supports application/json MIME type" 
     return 
    new_org = dbase.Organization() 
    name = self.request.get('name', default_value=None) 
    phone = self.request.get('phone', default_value=None) 
    street = self.request.get('street', default_value=None) 
    city = self.request.get('city', default_value=None) 
    state = self.request.get('state', default_value=None) 
    if name: 
     new_org.name = name 
    else: 
     self.response.status = 400 
     self.response.status_message = "Invalid request, Name is required" 
    if phone: 
     new_org.phone = phone 
    if street: 
     new_org.street = street 
    if city: 
     new_org.city = city 
    else: 
     self.response.status = 400 
     self.response.status_message = "Invalid request, City is required" 
    if state: 
     new_org.state = state 
    else: 
     self.response.status = 400 
     self.response.status_message = "Invalid request, State is required" 
    key = new_org.put() 
    out = new_org.to_dict() 
    self.response.write(json.dumps(out)) 
    return 

def get(self, **kwargs): 
    if 'application/json' not in self.request.accept: 
     self.response.status = 406 
     self.response.status_message = "API only supports application/json MIME type" 
    if 'id' in kwargs: 
     out = ndb.Key(dbase.Organization, int(kwargs['id'])).get().to_dict() 
     self.response.write(json.dumps(out)) 
    else: 
     q = dbase.Organization.query() 
     keys = q.fetch(keys_only=True) 
     results = { 'keys' : [x.id() for x in keys]} 
     self.response.write(json.dumps(results)) 

Надеюсь, кто-то может мне помочь, потому что я не могу понять это, и у меня заканчивается время. Я использую notepad ++, но я изменил его, чтобы использовать пробелы вместо вкладок.

+0

Какой адрес вы запрашиваете? – snakecharmerb

ответ

0

Попробуйте вставить ваш def get() и def post()

+0

Ха-ха, конечно, это нечто такое маленькое. Спасибо, вдаваясь в def get(), сделал трюк. –

+0

Я собирался отредактировать вопрос, потому что думал, что это ошибка с отступом ... – marcadian