我喜欢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规范没有指定最大长度,但几乎所有浏览器至少支持2000个字符,这对我来说意味着需要一个新的合理默认值。
好奇地深入挖掘后,我发现第一个添加限制的提交是由@jacobian于2007年1月完成的(#f6390e8
);自那以来基本上没有变化。
再回到更早之前,我发现了我认为是将字段类型映射到ORM数据库列类型的代码版本(由@adrianholovaty完成的#f69cf70
)。例如,MySQL文件从Django 0.95开始就存在,具有相同的200个字符限制:
URLField(max_length=1000, ...)
。https://docs.djangoproject.com/en/3.1/ref/models/fields/#urlfield - Taylor D. Edmiston