2017-03-04 28 views
0

我为Python使用Google Identity平台,我有两种类型的用户 - 提供者和顾问。两者都将在Google Apps域中拥有一个帐户。Appengine用户和管理员 - 根据用户类型呈现模板元素

为了分离我的应用程序的工作流程,我认为

  • 供应商应该是一个普通用户

  • 顾问应该是一个管理员用户

管理员用户在这里讨论: https://cloud.google.com/appengine/docs/standard/python/users/adminusers

我有一个基本的了解,is_current_user_admin()提供了一个测试,如果当前用户是类型管理员(因此在我的应用程序中的顾问)。

有件事情我想,以显示不同,这取决于用户类型特定页面。

例如,我将如何显示在下面的下拉菜单中选择“插入评估”链接只给管理员,而不是给非管理员用户:

<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> 

编辑:定义admin变量。 ..?

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)) 

回答

1

您必须分成两个独立的子问题一个问题:如何显示在模板文本有条件,你怎么告诉我们,如果当前用户是管理员。

第一个问题是解决与{% 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() 

当您呈现模板时。

+0

很好...所以我应该在template_values字典中声明'admin'变量传递给jinja模板?在编辑上面? – TimothyAURA

+0

这是一个很好的地方。 –

+0

这完美的工作戴夫,只是请注意,虽然你错过了用户s:即users.is_current_user_admin()。但很好的答案:) – TimothyAURA