Appengine 用户和管理员 - 根据用户类型呈现模板元素
Appengine users and admins - render template elements depending on user type
我正在为 Python 使用 Google 身份平台,我有两种类型的用户 - 提供者和顾问。两者都将在 Google Apps 域中拥有一个帐户。
为了分离我的应用程序工作流程,我认为
提供者应该是普通用户
顾问应该是管理员用户
此处讨论管理员用户:
https://cloud.google.com/appengine/docs/standard/python/users/adminusers
我有一个基本的理解,is_current_user_admin()
提供了一个测试,如果当前用户是管理员类型(因此在我的应用程序中是顾问)。
有些内容我希望根据用户类型以不同方式显示在特定页面上。
例如,我如何在以下下拉菜单中仅向管理员显示 "Insert Assessment" link,而不向非管理员用户显示:
<div class="btn-group pull-right">
<button type="button" class="btn btn-danger">Consult Actions</button>
<button type="button" class="btn btn-danger dropdown-toggle dropdown-toggle-split" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<span class="sr-only">Toggle Dropdown</span>
</button>
<div class="dropdown-menu">
<a class="dropdown-item" href="#">Edit Consult</a>
<a class="dropdown-item" href="#">Cancel Consult</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="/schedule/insert-assessment?key={{consult.key.urlsafe()}}">Insert Assessment</a>
</div>
</div>
编辑:定义管理变量...?
def get(self):
consult_key = ndb.Key(urlsafe=self.request.get('key'))
consult = consult_key.get()
# assessment and consult have the same key ID
assessment = Assessments.get_by_id(consult_key.id())
template = JINJA_ENVIRONMENT.get_template('/templates/view-consult.html')
template_values = {
'consult': consult,
'assessment': assessment
'admin': user is not None and user.is_current_user_admin()
}
self.response.out.write(template.render(template_values))
您的问题可分为两个独立的子问题:如何有条件地在模板中显示文本,以及如何判断当前用户是否为管理员。
第一个问题用{% if %}
标签解决了。例如,
{% if admin %}
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="/schedule/insert-assessment?key={{consult.key.urlsafe()}}">Insert Assessment</a>
</div>
{% endif %}
第二个问题是如何设置admin
变量的值。为此,您可以在链接到的页面上借用代码,并使用类似
'admin': user is not None and user.is_current_user_admin()
渲染模板时。
我正在为 Python 使用 Google 身份平台,我有两种类型的用户 - 提供者和顾问。两者都将在 Google Apps 域中拥有一个帐户。
为了分离我的应用程序工作流程,我认为
提供者应该是普通用户
顾问应该是管理员用户
此处讨论管理员用户: https://cloud.google.com/appengine/docs/standard/python/users/adminusers
我有一个基本的理解,is_current_user_admin()
提供了一个测试,如果当前用户是管理员类型(因此在我的应用程序中是顾问)。
有些内容我希望根据用户类型以不同方式显示在特定页面上。
例如,我如何在以下下拉菜单中仅向管理员显示 "Insert Assessment" link,而不向非管理员用户显示:
<div class="btn-group pull-right">
<button type="button" class="btn btn-danger">Consult Actions</button>
<button type="button" class="btn btn-danger dropdown-toggle dropdown-toggle-split" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<span class="sr-only">Toggle Dropdown</span>
</button>
<div class="dropdown-menu">
<a class="dropdown-item" href="#">Edit Consult</a>
<a class="dropdown-item" href="#">Cancel Consult</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="/schedule/insert-assessment?key={{consult.key.urlsafe()}}">Insert Assessment</a>
</div>
</div>
编辑:定义管理变量...?
def get(self):
consult_key = ndb.Key(urlsafe=self.request.get('key'))
consult = consult_key.get()
# assessment and consult have the same key ID
assessment = Assessments.get_by_id(consult_key.id())
template = JINJA_ENVIRONMENT.get_template('/templates/view-consult.html')
template_values = {
'consult': consult,
'assessment': assessment
'admin': user is not None and user.is_current_user_admin()
}
self.response.out.write(template.render(template_values))
您的问题可分为两个独立的子问题:如何有条件地在模板中显示文本,以及如何判断当前用户是否为管理员。
第一个问题用{% if %}
标签解决了。例如,
{% if admin %}
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="/schedule/insert-assessment?key={{consult.key.urlsafe()}}">Insert Assessment</a>
</div>
{% endif %}
第二个问题是如何设置admin
变量的值。为此,您可以在链接到的页面上借用代码,并使用类似
'admin': user is not None and user.is_current_user_admin()
渲染模板时。