我有一个Django模型中存储的URL,我想在模板上显示,但我只想显示这样的域:
原始网址:

https://wikipedia.org/wiki/List_of_chemical_process_simulators

显示:
wikipedia.org/...

完全在后端、字体端或jinja2上的自定义函数上处理这个问题会更好吗?

最佳答案

如果您以后在整个项目的模板中重用它,并且考虑到涉及到非常简单的逻辑,那么在这里定义custom template filter就完全可以了。
使用urlparse.urlparse()获取域名:

>>> from urlparse import urlparse
>>> from jinja2 import Environment, Template
>>>
>>> def get_domain(url):
...     return "%s/..." % urlparse(url).netloc
...
>>>
>>> env = Environment()
>>> env.filters['domain'] = get_domain
>>>
>>> template = env.from_string('{{ url|domain }}')
>>> template.render(url='https://wikipedia.org/wiki/List_of_chemical_process_simulators')
u'wikipedia.org/...'

这是一个简单的例子,您还应该提供一个错误处理机制,以防urlparse()无法解析传入的url。

关于python - 使用Jinja2仅显示URL域的最佳方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27696337/

10-11 05:12