2013-12-07 6 views
1

Я создаю панель администратора для моего приложения GAE.Администратор в Google App Engine

Вот часть моей app.yaml

- url: /admin/.* 
    script: admin.application 
    login: admin 

- url: /.* 
    script: myApp.application 

И вот часть моего моего admin.py:

class AdminPage(webapp2.RequestHandler): 
    def get(self): 
     self.response.headers['Content-Type'] = 'text/plain' 
     self.response.write('Hello, Admin') 

application = webapp2.WSGIApplication([ 
    ('/', AdminPage), 
], debug=True) 

Если я не вошли в систему я получаю «вошедшего в пользователь [email protected] не имеет права просматривать эту страницу ». сообщение, которое я хотел.

Я получаю ошибку 404, когда пытаюсь перейти к myApp/admin/во время входа в систему как администратор, и я не знаю, как это решить.

+0

Что вы подразумеваете под 'myApp/admin /'? не будет ли это «localhost: 8080/admin»? – mgilson

+0

@mgilson Я думаю, он имел в виду, что он был как мини-CMS, удалял сообщения, редактировал вещи и т. Д. – Truerror

ответ

4

Похоже, ваше приложение не имеет правила для /admin/. Вам нужно изменить ваш application к этому:

application = webapp2.WSGIApplication([ 
    ('/admin/', AdminPage), 
], debug=True) 

Когда вы идете в /admin/, в login: admin часть вашего app.yaml показывает ошибку входа в систему, прежде чем она когда-либо попадает файл admin.py, если вы не вошли в систему Когда. вы вошли в систему, приложение пытается найти URL-адрес, соответствующий /admin/, но единственный настроенный URL-адрес: /.

+0

Или это могло быть '/.*' – dragonx

+1

@dragonx Это соответствовало бы, но, вероятно, это не очень хорошо в этом случае. Соответствие таким образом вернет AdminPage вместо 404, когда было бы более целесообразно это сделать. Кроме того, наличие канонического URL-адреса ресурса всегда является хорошей идеей (это также позволяет вам воспользоваться функцией 'webapp2.uri_for'). Я бы использовал «RedirectRoute» с «strict_slash = True», чтобы получить поведение перенаправления с отсутствующей или дополнительной конечной косой черты на настроенный URL (например, '/ admin' ->'/admin/'), но это просто мнение о том, как должна вести себя маршрутизация. – jonafato