2017-04-04 80 views
0

我在许多不同的模板和表格中使用相同的模型。我正在寻找一种方法来告诉Django如何在模板中渲染这些对象,所以我不必一次又一次地写出相同的htmlDjango模型 - html /渲染属性?

例如模型的网址 - 当我想以显示它的模板或表格内,我必须写(有时更多):

<a href="{{ url.url }}">{{ url.site.name }}</a> 

这使得:

<a href="http://stackoverflow.com/questions/ask">Stackoverflow.com</a> 

会如果我可以做的更好,如果我可以做这样的事情:

{{ url }} # url is Url model object 

我认为我可以添加像def render_object(self)这样的:

def render_object(self): 
    return mark_safe("""<a href="{}">{}</a>""".format(self.url,self.site.name)) 

和模板:

{{ url.render_object }} 

,但我很好奇,如果它是有一些内置的功能。据我所知__unicode__(self)会做的工作,但它会混乱管理员和外壳显示名称。

+0

您是否检查过https://docs.djangoproject.com/zh/1.10/howto/custom-template-tags/? – itzMEonTV

回答

0

添加自定义模板标签my_tags.pyrender_url,然后在模板载荷模板标签({% load my_tags %})和发送URL对象吧:{% render_url url %}。你可以在你的标签中使用html模板,或者把结果作为一个字符串并返回。详细信息请查看documentation