django render_partial标记允许将渲染视图插入模板
django-render-partial的Python项目详细描述
安装
- pip install django_render_partial
- 将'django_render_partial'添加到INSTALLED_APPS
- 确保'django.template.context_processors.request'在 TEMPLATES['OPTIONS']['context_processors']
用法
为部分视图编写模板,例如partial_view.html:
<p>{{ arg1 }} + {{ arg2 }} = {{ result }}</p>
编写部分视图:
def partial_view(request, *args, **kwargs): result = kwargs['arg1'] + kwargs['arg2'] kwargs['result'] = result return render(request, 'partial_view.html', kwargs)
如果使用基于功能的视图,或:
class PartialView(TemplateView): template_name = 'partial_view.html' def get_context_data(self, **kwargs): result = kwargs['arg1'] + kwargs['arg2'] kwargs['result'] = result return super(PartialView, self).get_context_data(**kwargs)
如果使用的是基于类的视图。
将其添加到urls.py:
url(r'^partial-view/(?P<arg1>\w+)/(?P<arg2>\w+)/$', partial_view, name='partial_view'),
或:
url(r'^partial-view/(?P<arg1>\w+)/(?P<arg2>\w+)/$', PartialView.as_view(), name='partial_view'),
在您的模板中:
{% load render_partial %} {% with some_var=2 %} {% render_partial 'partial_view' arg1=40 arg2=some_var %} {% endwith %}
render_partial标记将呈现为:
<p>40 + 2 = 42</p>
注意,^{tt8}不需要上面的with标记$ 去工作。它用于显示render_partial接受变量。 除了 任何关键字参数。
如果不想在urls.py中公开部分视图,可以 同时使用完全限定的点分隔视图名称:
{% render_partial 'partial_test.views.PartialView' arg1=40 arg2=some_var %} {% render_partial 'partial_test.views.partial_view' arg1=40 arg2=some_var %}
important:调用模板必须接收一个名为 request包含原始的HttpRequest。别忘了加上 'django.template.context_processors.request'到 TEMPLATES['OPTIONS']['context_processors']。