Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用jinja2仅显示URL域的最佳方式_Python_Django_Templates_Jinja2 - Fatal编程技术网

Python 使用jinja2仅显示URL域的最佳方式

Python 使用jinja2仅显示URL域的最佳方式,python,django,templates,jinja2,Python,Django,Templates,Jinja2,我想在模板上显示Django模型中存储的URL,但我只想如下显示域: 原始url: https://wikipedia.org/wiki/List_of_chemical_process_simulators 显示: wikipedia.org/... 在后端、字体端或jinja2上的自定义函数上完全处理这个问题会更好吗?如果您以后会在整个项目的模板中重用它,并且考虑到涉及到一个非常简单的逻辑,在这里定义a是完全可以的 用于获取域名: >>> from urlparse i

我想在模板上显示Django模型中存储的URL,但我只想如下显示域:

原始url:

https://wikipedia.org/wiki/List_of_chemical_process_simulators
显示:

wikipedia.org/...

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

如果您以后会在整个项目的模板中重用它,并且考虑到涉及到一个非常简单的逻辑,在这里定义a是完全可以的

用于获取域名:

>>> 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失败,您应该另外提供一个错误处理机制。

最好的方法可能是@alecxe回答的自定义模板过滤器,但如果您不能,这里有一个非傻瓜式的方法供将来参考

{{ original_url.rpartition("//")[-1] }}
  • https://wikipedia.org/wiki/List_of_chemical_process_simulators → wikipedia.org/wiki/List\u of\u chemical\u process\u Simulator
  • //example.net/path/to/file→ 示例.net/path/to/file
  • ftp://example.net/pub → 示例.net/pub
仅获取域名(主机名):

  • https://wikipedia.org/wiki/List_of_chemical_process_simulators → 维基百科.org
  • //example.net/path/to/file→ 示例.net
  • ftp://example.net/pub → 示例.net
{{ original_url.rpartition("//")[-1].partition("/")[0] }}