gpt4 book ai didi

django urlfield http 前缀

转载 作者:行者123 更新时间:2023-12-02 11:52:27 26 4
gpt4 key购买 nike

有谁知道如何去掉 Django urlfield 中的“http://”前缀。

我的意思是,当我们将一个字段定义为 urlfield 并尝试向其中输入 url 时,如果没有提供 schema,django 会自动为其添加“http://”前缀。我不需要那个前缀。

我尝试在 clean_field 和 clean 方法下删除它。这不起作用。

我深入研究了源代码。我看到 django 在 UrlField 类下的“to_python”方法中添加了“http://”。

有什么方法可以覆盖它以摆脱“http://”吗?

最佳答案

如果没有方案前缀,字符串就不可能是真正的 URL,因此 URLField 将不支持它。

但是,URLField 几乎只是一个带有 URLValidatorCharField,因此如果您编写一个新的 SchemelessURLValidator code> (从内置的派生)并将其添加到普通的 CharField 中,这应该可以让您到达您想要去的地方。

事实上,您的新验证器可以像这样简单

class SchemelessURLValidator(URLValidator):
regex = re.compile(
r'(?:(?:[A-Z0-9](?:[A-Z0-9-]{0,61}[A-Z0-9])?\.)+(?:[A-Z]{2,6}\.?|[A-Z0-9-]{2,}\.?)|' # domain...
r'localhost|' # localhost...
r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}|' # ...or ipv4
r'\[?[A-F0-9]*:[A-F0-9:]+\]?)' # ...or ipv6
r'(?::\d+)?' # optional port
r'(?:/?|[/?]\S+)$', re.IGNORECASE)

关于django urlfield http 前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16307055/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com