簡體   English   中英

django編寫自定義上下文處理器

[英]django writing custom context processor

我正在Django(1.11)上編寫自己的自定義context_processor ,並從auth0獲取經過身份驗證的用戶的信息。 這不是我第一次寫它,我也不知道這個錯誤是從哪里來的:

ImportError:模塊“ auth.context_processors”未定義“ auth0_processors”屬性/類

看起來是這樣的:

auth / settings.py:

'context_processors': [
     'django.template.context_processors.debug',
     'django.template.context_processors.request',
     'django.contrib.auth.context_processors.auth',
     'django.contrib.messages.context_processors.messages',
     'auth.context_processors.auth0_processors', 
],

auth / context_processors / auth0_processors.py:

def auth0_user(request):
    try:
        user = request.session['profile']
    except Exception as e:
        user = None

    return {'auth0_user': user}

account / views.py:

def home(request):
    return render(request, 'home.html', {})

任何想法?

代替

'auth.context_processors.auth0_processors'

給出具體方法:

'auth.context_processors.auth0_processors.auth0_user'

至少那是該錯誤所抱怨的:

沒有定義“ auth0_processors” 屬性/類

它正在尋找類或屬性,因此請嘗試使用函數名稱。

文檔中

context_processors選項是可調用項的列表,稱為上下文處理器 ,這些可調用項將請求對象作為其自變量,並返回要合並到上下文中的項的字典。

在回答您的評論時:

如果您始終需要相同的對象,則只需創建一個將所有必需的對象添加到上下文中的方法,而不是幾個方法。

編輯:

還要注意,使用'django.template.context_processors.request'您可能已經在上下文中擁有了完整的request對象。 如果只需要訪問會話,則可能不需要自己的上下文處理器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM