テンプレートタグの使用を検討してください。インクルードタグのようなものがうまく機能するはずです(ドキュメントhttps://docs.djangoproject.com/en/1.10/howto/custom-template-tags/#inclusion-tagsを参照してください)
データを渡すにはtakes_context引数を使用できます。任意のページでは、すでにビューで「データ」のコンテキスト変数、この機能でしょう。この
@register.inclusion_tag('/path/to/blog_posts.html', takes_context=True)
def blog_posts(context):
return {
'blog_posts': context['data'],
}
のようなその上にピックアップその後での使用HTMLでそのページを読み込むことができますに含めるタグを使用するようにあなたがブログ投稿を引きたいファイル
{% blog_posts %}
任意のビューからの使用。その後
@register.inclusion_tag('/path/to/blog_posts.html')
def blog_posts(context, data):
return {
'blog_posts': data,
}
に この
のように別のオプションを明示的に引数として渡すことです
def example_view(request):
context = {'data': Blog.objects.all()}
return render(request, 'example.html', context)
あなたはまた、テンプレートタグを使用したいあなたはどこにでもデータを設定することを確認し、使用
{% blog_posts data %}
もちろん、包含タグで使用されているblog_posts.htmlファイルは、データをループするような処理を行います。
<div>
{% for post in blog_posts %}
<p>{{ post.name}}
{% endfor %}
</div>