gpt4 book ai didi

django - 在 Django REST 框架中进行 SlugField 验证的推荐方法是什么?

转载 作者:行者123 更新时间:2023-12-02 02:02:21 25 4
gpt4 key购买 nike

我正在使用 Django REST 框架构建一个 RESTful API。我的一个模型看起来有点像这样:

class Zone(models.Model):
name = models.SlugField(max_length=50, unique=True)
... other fields

所以我构建了一个像这样的序列化器:

class ZoneSerializer(serializers.ModelSerializer):

class Meta:
model = Zone
fields = ('name', ... other fields)

在发布数据以创建新区域时,我不确定我负责多少验证以及应该自动进行多少验证。我尝试了以下测试用例:

  1. name 是 50 个字符或更少的有效 slug 时,验证成功。
  2. name 是 50 多个字符的有效 slug 时,验证失败并显示相应的错误消息。
  3. name 是无效的 slug(例如“abc def”)时,验证成功并使用无效名称创建区域。

深入研究代码,我可以看到字段的长度run_validators 中的 django.core.validators.MaxLengthValidator 验证rest_framework/fields.py,但 validate_slug 未包含在验证器列表中。

我知道我可以像这样向我的序列化程序添加一个 validate_name 方法:

def validate_name(self, attrs, source):
"""
Make sure this is a slug field
"""
value = attrs[source]
if not validators.validate_slug(value):
raise serializers.ValidationError("Not a slug")
return attrs

但这似乎有点矫枉过正。我在这里做错了什么吗?

最佳答案

听起来那里有一个有效的拉取请求。 :) validate_slug 可能应该自动发生。

最佳行动方案:

  1. 仔细检查 Django slug 表单字段行为与 REST 框架序列化程序字段行为 - 它们是否完全不同?
  2. 为问题提出问题,记下您从 (1) 中确定的内容。
  3. 尝试编写一个失败的测试用例并将其作为拉取请求提交。
  4. 如果可能,用修复更新 PR。
  5. 利润!!!11!!!! (好吧,把你的名字写在致谢名单上,并因为贡献了修复而感到温暖)

干杯,

汤姆

关于django - 在 Django REST 框架中进行 SlugField 验证的推荐方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16636471/

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