Только для администраторов области в Django + App Engine - PullRequest
1 голос
/ 05 декабря 2010

Я использую django-norel для развертывания на движке приложений. Какое из них будет лучшим решением для областей только с правами администратора?1) использование app.yaml для определения областей только администратора 2) написание промежуточного программного обеспечения для gser userservice

update: в ap.yaml есть эта запись

   - url: /.*
  script: djangoappengine/main/main.py

, это не значит, чтовсе страницы будут обрабатываться main.py, если я использую login:admin как это повлияет на текущую функциональность?

Ответы [ 2 ]

2 голосов
/ 05 декабря 2010

Используйте app.yaml для административных областей, потому что login: admin - это простое и чистое решение.

Если вам нужны функции модератора на общедоступных страницах, вы можете использовать users.is_current_user_admin () .

Обновление: Вы не можете использовать login: admin, чтобы ограничить доступ к некоторым функциям в одном файле. Если вы хотите использовать его, вам нужно создать отдельный файл admin.py или что-то в этом роде.

Вы также можете попытаться создать декоратор функций, например @admin_required. Вот пример для @login_required.

Вот часть, которую вам нужно изменить:

user = users.get_current_user()
if not user:
   self.redirect(users.create_login_url(self.request.uri))
   return
else:
   handler_method(self, *args)

до

if not users.is_current_user_admin():
    self.redirect(denied_url)
    return
else:
    handler_method(self, *args)
1 голос
/ 05 декабря 2010

Для сторонней админки я использую appengine_admin . Для передачи переменной, является ли текущий пользователь администратором шаблона, я также нашел следующее удобное

self.response.out.write(template.render(path, {''admin':users.is_current_user_admin()..

затем в шаблоне административные части отображаются в сторону администратора с тегом

{% if admin %} ... admin stuff
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...