我正在使用django-norel来部署到app引擎。对于仅管理区域,哪一个更好的解决方案呢? 1)使用app.yaml定义仅限管理员的区域 2)为google userservice编写中间件
更新: 有这个条目
- url: /.*
script: djangoappengine/main/main.py
ap.yaml中的并不意味着所有页面都将由main.py处理
如果我使用login:admin
,那将如何影响当前功能?
答案 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