如何从RoR中的部分渲染等模板级别调用视图方法?问题在blog中得到了很好的说明。我可以使用include在模板中包含模板,但是我必须匹配模板层的所有变量名称。我真的希望在模板中包含视图并解耦图层。该博客是一年前写的。从那以后有更好的解决方案吗?
由于
答案 0 :(得分:54)
我认为你正在寻找{% include '_partial.html' %}
。
答案 1 :(得分:27)
https://docs.djangoproject.com/en/dev/ref/templates/builtins/?from=olddocs#include
如果在包含partial时使用'with'参数,则不需要匹配变量 - 您可以在包含模板之前重命名变量。我发现这种技术使我能够创建更多可重用的模板。此外,它比创建包含标记少得多。例如:
{% include 'partials/blog_entry.html' with blog_entry=my_blog_entry %}
答案 2 :(得分:12)
模板标签绝对是在Django中实现此目的的方法。如果您需要将特定的东西传递给模板并让它渲染内容,您可以使用内置的包含标记,它接受传递给它们的变量。
现在,使用inclusion tags,您必须指定要呈现的模板的路径。 Django不会像在Rails中那样自动找到/your_app/views/_my_partial.html.erb
。
查看文档,看看是否能满足您的需求。如果没有,你可以随时自己编写。
答案 3 :(得分:3)
我已调整this snippet并将其设为pypi package。
pip install django_render_partial
将'django_render_partial'
添加到INSTALLED_APPS
确保'django.template.context_processors.request'
位于TEMPLATES['OPTIONS']['context_processors']
在模板中使用{% render_partial %}
标记:
{% load render_partial %}
{# using view name from urls.py #}
{% render_partial 'partial_view' arg1=40 arg2=some_var %}
{# using fully qualified view name #}
{% render_partial 'partial_test.views.partial_view' arg1=40 arg2=some_var %}
{# class based view #}
{% render_partial 'partial_test.views.PartialView' arg1=40 arg2=some_var %}
GitHub上提供了包含这些示例的test project。