通过渲染变量的中间值来在Django模板中修改变量

时间:2019-09-04 10:13:51

标签: python django split django-templates

我的模板中有一个变量key.links.self(来自json输出),它是一个URL:

https://ahostnamea.net:666/api/v1/

现在我想做的就是从此变量仅在模板ahostnamea中进行渲染。

我知道可以剪切字母,但是当第一个字母始终具有相同的计数(https:// = 8个字母)时,其余字母就不是那么简单,而且会有所不同。

有什么方法可以将字符串从/拆分/切割为.吗?还是其他方式?

2 个答案:

答案 0 :(得分:0)

一个合适的解决方案是{{ request.META.HTTP_HOST }}

答案 1 :(得分:0)

您可以使用具有捕获组和否定字符类[^.]+的模式,该字符类与除点以外的任何字符都匹配。

https?://([^.]+)

Regex demo | Python demo

例如

import re

regex = r"https?://([^.]+)"
test_str = "https://ahostnamea.net:666/api/v1/"
matches = re.search(regex, test_str)

if matches:
    print(matches.group(1))

结果

ahostnamea

修改

根据建议,您还可以使用urllib.parse获取主机名。

from urllib.parse import urlparse
o = urlparse("https://ahostnamea.net:666/api/v1/")

Python demo

您可以通过分割一个点来获得第一部分:

s = o.hostname.split('.', 1)[0]
print(s)

结果

ahostnamea