私はDjangoを使ってウェブサイトを構築しています。カスタムテンプレートタグテンプレート内から自分のテンプレート変数にアクセスするにはどうすればよいですか?
TEMPLATE_CONTEXT_PROCESSORS = (
...
"mysite.context_processors.mystandardvariables"
)
これは私が、このようなSITE_NAMEやSITE_ROOTなどのテンプレートで使用したいいくつかの標準的な変数を追加します。
私はこのようになりますコンテキストプロセッサを設定しています。
私は最初のカスタムテンプレートタグを作成しましたが、私はこれらの標準変数にアクセスすることができません。
エラーは表示されず、ページにはOKと表示されます。必要な変数は使用できません。
利用可能な変数を確認するには、既に{% debug %}
を使用してください。
私のタグは次のようになります。
@register.inclusion_tag('search/search_snippet.html', takes_context = True)
def search(context):
form = forms.SearchForm()
return {'form': form }
タグ用のテンプレートは次のようになります。
<form action="{{ SITE_ROOT }}search" method="post">
{% csrf_token %}
<table>
{{ form.as_table }}
</table>
<input type="submit" value="Submit">
</form>
私はこのような私のホームページに検索タグを含めています:
{% extends "base.html" %}
{% load search_tags %}
{% block content %}
{% search %}
{% endblock %}
あなたが探しているキーが 'context'にないと確信していますか? – Brandon
ありがとう、彼らはそうだね!私は私の 'フォーム'変数をマージして 'コンテキスト'を返さなければならないと思いますか? –
いいえ、変数をマージする必要はありません。コンテキスト内の変数をキーで把握できるようになります。そのキーを使用して、インクルードタグが取得して何かを行うことができます。 'context.get( 'SITE_NAME'、None)' – Brandon