我有一个很棒的小部件来显示信息,我想在模板中使用它,但不使用窗体。django模板中的渲染小部件
我的模板只用于显示信息,没有任何表单需要提交。如何在不使用表单的情况下在模板中呈现此小部件。我必须考虑到这个小部件提供了一些用户数据。我可以使用模板标签吗?
谢谢!
我有一个很棒的小部件来显示信息,我想在模板中使用它,但不使用窗体。django模板中的渲染小部件
我的模板只用于显示信息,没有任何表单需要提交。如何在不使用表单的情况下在模板中呈现此小部件。我必须考虑到这个小部件提供了一些用户数据。我可以使用模板标签吗?
谢谢!
在自定义Widget类中实现小部件的render
方法。
render(self, name, value, attrs=None)
render方法负责窗口小部件的html表示。 E.g渲染的TextInput
返回这片HTML的方法:
>>> name = forms.TextInput(attrs={'size': 10, 'title': 'Your name',})
>>> name.render('name', 'A name')
u'<input title="Your name" type="text" name="name" value="A name" size="10"/>'
可以渲染方法的返回值,然后添加到视图的上下文。
def my_view(request):
widget_html = MyCustomWidget.render(...)
return render_to_response(..., {'widget_html': widget_html})
现在,您可以使用您的模板显示部件:
{{ widget_html }}
你也可以写一个templatetag作为@ablm建议。
我会不使用窗体的一般方法是不使用应该在窗体中的对象。本质上,我会创建一个带有我的小部件的HTML代码的django模板,以及一个Mixin(正如我通常试图仅使用基于类的视图)或一个将为该小部件生成正确的上下文参数的函数。
这使HTML与HTML保持一致,逻辑与逻辑保持一致。如果它仅用于显示信息,则不必是一个小部件。
无论你想要哪个小部件,都要确保在你的视图中调用(功能)或混入(基于类),以及小部件模板{%include%},并让模板渲染器完成工作。
也许调用widget.render方法?它是否存在! – ablm
我怎样才能在模板中调用渲染方法? – danielrvt
先检查一下是否存在该方法。如果你想在模板中调用它,你必须制作一个模板标签。 – ablm