通过渲染变量中间来修改 django 模板中的变量



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

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

现在我想做的是仅从这个变量ahostnamea在模板中呈现。

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

有没有办法将字符串从/分割/切割到.?还是其他方式?

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

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

正则表达式演示 |蟒蛇演示

例如

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/")

蟒蛇演示

例如,您可以通过在点上拆分来获得第一部分:

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

结果

ahostnamea

一个正确的解决方案是{{ request.META.HTTP_HOST }}

最新更新