/ / Django REST ढांचे में स्लगफ़िल्ल्ड सत्यापन के लिए अनुशंसित दृष्टिकोण क्या है? - django, django-rest-framework

Django REST ढांचे में स्लगफ़िल्ल्ड सत्यापन के लिए अनुशंसित दृष्टिकोण क्या है? - django, django-rest-framework

मैं Django REST ढांचे का उपयोग कर एक अस्थायी एपीआई का निर्माण कर रहा हूं। मेरे मॉडल में से एक इस तरह दिखता है:

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 वर्णों या उससे कम का वैध स्लग है, सत्यापन सफल होता है।
  2. कब name 50+ वर्णों का एक वैध स्लग है, सत्यापन एक उचित त्रुटि संदेश के साथ विफल रहता है।
  3. कब name एक अमान्य स्लग है (उदा। "एबीसी डीफ़"), सत्यापन सफल होता है और अमान्य नाम के साथ एक जोन बनाया जाता है।

कोड में खोदना मैं देख सकता हूं कि लंबाई एक क्षेत्र के द्वारा मान्य है django.core.validators.MaxLengthValidator में run_validators में rest_framework/fields.py, परंतु validate_slug वैधताओं की सूची में शामिल नहीं है।

मुझे पता है कि मैं एक जोड़ सकता हूँ validate_name इस तरह मेरे serializer के लिए विधि:

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

लेकिन यह ओवरकिल की तरह लगता है। क्या मुझसे यहां कुछ गलत हो रहा है?

उत्तर:

जवाब के लिए 2 № 1

लगता है जैसे वहाँ एक वैध पुल अनुरोध है। :) validate_slug शायद स्वचालित रूप से होना चाहिए।

कार्रवाई का सबसे अच्छा तरीका:

  1. आरईएसटी फ्रेमवर्क सीरियलाइज़र फील्ड व्यवहार के खिलाफ Django स्लग फॉर्म फ़ील्ड व्यवहार को दो बार जांचें - क्या वे निश्चित रूप से अलग हैं?
  2. इस मुद्दे के लिए टिकट बढ़ाएं, यह ध्यान दें कि आपने (1) से क्या निर्धारित किया है।
  3. एक असफल परीक्षण केस लिखने का प्रयास करें और इसे पुल अनुरोध के रूप में सबमिट करें।
  4. यदि संभव हो तो फिक्स के साथ पीआर अपडेट करें।
  5. लाभ !!! 11 !!!! (ठीक है, क्रेडिट में अपना नाम प्राप्त करें, और फिक्स का योगदान करने के लिए एक अच्छी गर्म महसूस करें)

चीयर्स,

टॉम