如果這是要一個子中的每一頁上使用,你可以創建一個template context processor:
上下文處理器有一個非常簡單的接口:這只是一個Python函數,它接受一個參數,一個HttpRequest對象,並返回一個添加到模板上下文的字典。每個情境處理器必須返回一個字典。
from django.contrib.auth import get_user_model
from django.shortcuts import get_object_or_404
def user_subdomain(request):
host = request.META['HTTP_HOST']
subdomain = host.split('.')[0] # Or whatever more accurate parsing if needed
User = get_user_model()
user = get_object_or_404(User, username=subdomain)
return {
'subdomain_user': user, # avoid naming it `user` as this is
# the current signed in user
}
而這個上下文處理器添加到您的設置:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
...
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
...
'yourapp.context_processors.user_subdomain',
],
},
}
]
然後,在你的模板,就可以得到該用戶爲{{ subdomain_user }}
。
你需要更具體。 「用戶名」從哪裏來?爲什麼不能從視圖或上下文處理器發送數據? –
首先,您應該在您的控制器中創建函數,該函數根據特定參數返回您需要的特定字段,例如'user_id'。 – user3041764
@DanielRoseman我可以從上下文處理器發送數據,但不能發送視圖。我不知道如何在上下文處理器中編寫代碼來完成我想實現的目標。 –