仅管理django + app引擎中的区域

时间:2010-12-05 13:03:06

标签: python django google-app-engine

我正在使用django-norel来部署到app引擎。对于仅管理区域,哪一个更好的解决方案呢? 1)使用app.yaml定义仅限管理员的区域 2)为google userservice编写中间件

更新: 有这个条目

   - url: /.*
  script: djangoappengine/main/main.py
ap.yaml中的

并不意味着所有页面都将由main.py处理 如果我使用login:admin,那将如何影响当前功能?

2 个答案:

答案 0 :(得分:2)

将app.yaml用于管理区域,因为login: admin是一个简单而干净的解决方案。

如果您想要公共页面上的版主功能,可以使用users.is_current_user_admin()

更新:您无法使用login: admin限制对一个文件中某些功能的访问。如果你想使用它,你必须创建一个单独的admin.py文件。

你也可以尝试创建像@admin_required这样的函数装饰器。 Here's @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 :(得分:1)

对于第三方管理区域,我使用appengine_admin。 要将当前用户是否为admin的变量传递给模板,我还发现了以下方便

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

然后在模板管理部件中向管理员显示标签

{% if admin %} ... admin stuff