为何默认情况下Django的URLField截断为200个字符?
作者:互联网
我喜欢Django,并定期使用它.我发现它的大多数默认设置都是理智的,但是人们总是困扰我,以至于我在每个项目中都将其覆盖.
URLField
模型字段的默认最大长度为200个字符.文档验证了此限制,但没有解释为什么会如此.
class URLField(CharField):
...
def __init__(self, verbose_name=None, name=None, **kwargs):
kwargs['max_length'] = kwargs.get('max_length', 200)
...
我重写它是因为大量URL的长度超过200个字符,尤其是带有查询字符串的URL.
我知道尽管HTTP规范does not specify a maximum length,但实际上所有浏览器都支持at least 2000 characters,这对我来说是一个新的默认值.
出于好奇的考虑,我发现在2007年1月首次提交了增加限制的提交(@jacobian提供的#f6390e8);从那以后,它基本上保持不变.
再回头,我发现了我认为是将字段类型映射为ORM(@adrianholovaty的#f69cf70)的代码的版本.例如,MySQL的文件存在于2006年5月,与Django 0.95相同,限制为200个字符:
解决方法:
我不能说为什么选择原始最大长度,您必须问问找到的补丁的作者.请注意07000,因此选择200可以避免此问题.
选择限制后,对其进行更改将存在向后兼容性问题.由于迁移是在Django 1.7中添加的,因此进行这样的更改会更容易.如果您强烈希望更改它,那么与堆栈溢出相比,Django开发人员邮件列表或票证跟踪器可能是一个更好的询问场所.
您可能会发现关于ticket 19515的讨论很有趣.
标签:url,orm,python,django,django-models 来源: https://codeday.me/bug/20191119/2035258.html