2017-03-04 54 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