Tay*_*ton 4 python django url orm django-models
我喜欢 Django 并且经常使用它。我发现它的大部分默认设置都是正常的,但有一个一直困扰着我,以至于我在每个项目中都覆盖了它。
模型字段的默认最大长度URLField为 200 个字符。文档验证了这个限制,但没有解释为什么会这样。
class URLField(CharField):
...
def __init__(self, verbose_name=None, name=None, **kwargs):
kwargs['max_length'] = kwargs.get('max_length', 200)
...
Run Code Online (Sandbox Code Playgroud)
我重写它是因为很多 URL 的长度都超过 200 个字符,尤其是带有查询字符串的 URL。
据我所知,虽然 HTTP 规范没有指定最大长度,但实际上所有浏览器都支持至少 2000 个字符,这对我来说意味着一个新的合理的默认值。
好奇地想深入挖掘,我发现了 2007 年 1 月添加限制的第一个提交(# f6390e8by @jacobian);从那以后它基本上没有变化。
更进一步,我发现了我认为的 ORM 字段类型到数据库列类型映射代码的版本(#f69cf70作者:@adrianholovaty)。例如,MySQL 文件于 2006 年 5 月存在,自 Django 0.95 以来具有相同的 200 个字符限制:
我无法说出为什么选择原始最大长度,您必须询问您找到的补丁的作者。请注意,MySQL 将唯一的 var 字符限制为 255 个字符,因此选择 200 可以避免此问题。
一旦选择了限制,更改它就会产生向后兼容性问题。由于 Django 1.7 中添加了迁移,因此进行这样的更改会更容易。如果您强烈想要更改它,Django 开发人员邮件列表或票务跟踪器可能是比堆栈溢出更好的询问处。
您可能会发现有关票证 19515的讨论很有趣。
| 归档时间: |
|
| 查看次数: |
2324 次 |
| 最近记录: |