これは、サブドメイン内のすべてのページで使用する場合は、あなたがtemplate context processorを作成することができます。
コンテキストプロセッサは、非常にシンプルなインターフェイスを持っている:それはHttpRequestの、一つの引数を取るだけでPythonの関数ですオブジェクトを作成し、テンプレートコンテキストに追加される辞書を返します。各コンテキストプロセッサは、辞書を返す必要があります。
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 }}
としてこのユーザーを取得することができます。
もっと具体的にする必要があります。 'username'はどこから来ますか?ビューやコンテキストプロセッサからデータを送信できないのはなぜですか? –
まず、特定のパラメータに基づいて必要な特定のフィールドを返す、例えば 'user_id'のような、あなたのコントローラに関数を作成する必要があります。 – user3041764
@DanielRoseman私はコンテキストプロセッサからデータを送信できますが、ビューは送信できません。コンテキストプロセッサにコードを書く方法を私が達成したいことをするのか分からない。 –