Django-rest-framework: تم استبعاد الحرف النقطي من عناوين URL لـ lookup_field url

تم إنشاؤها على ٦ نوفمبر ٢٠١٤  ·  4تعليقات  ·  مصدر: encode/django-rest-framework

في مكان ما بين djangorestframework==2.3.13 و djangorestframework==2.4.4 تغيير عنوان url الذي تم إنشاؤه لـ ModelViewSet لاستبعاد "." (نقطة / نقطة) حرف. هذا يعني أن حقل البحث المخصص الخاص بك لا يمكن أن يكون اسم مجال ، أو سلسلة أخرى تتضمن هذا الحرف.

نظرا لمجموعة عرض مثل:

class ZoneViewSet(viewsets.ModelViewSet):
    lookup_field = 'domain__name'

تم إنشاء عناوين url التالية ( djangorestframework==2.3.13 ):

^api/ ^v1/ ^zones/(?P<domain__name>[^/]+)/$ [name='zone-detail']
^api/ ^v1/ ^zones/(?P<domain__name>[^/]+)/\.(?P<format>[a-z0-9]+)$ [name='zone-detail']

والآن بـ djangorestframework==2.4.4 :

^api/ ^v1/ ^zones//$ [name='zone-detail']
^api/ ^v1/ ^zones/(?P<domain__name>[^/.]+)/\.(?P<format>[a-z0-9]+)$ [name='zone-detail']

يحدد [^] مجموعة استبعاد ، لذا فإن [^/] يستثني كل الشرطات المائلة للأمام ، بينما يستثني [^/.] الشرطات المائلة للأمام وأحرف النقطة (النقطة).

أعتقد أنه لا يوجد سبب لتقييد الفترات في URIs ويجب التراجع عن هذا التغيير.

التعليق الأكثر فائدة

وإليك الالتزام الذي كسر هذه الوظيفة السابقة https://github.com/tomchristie/django-rest-framework/commit/3cd15fb1713dfc49e1bf1fd48045ca3ae5654e18. يوضح سجل الالتزام أنك على دراية بالمشكلة. أفترض أنك لا تنوي تغييره ، لذلك سأغلق هذه المشكلة.

أي شخص يجد هذا يجب أن يدرك أنه للسماح بفترات في urlconf التي تم إنشاؤها بواسطة جهاز التوجيه الافتراضي ، تحتاج إلى إضافة lookup_value_regex = '[^/]+' إلى مجموعة العرض الخاصة بك.

ال 4 كومينتر

وإليك الالتزام الذي كسر هذه الوظيفة السابقة https://github.com/tomchristie/django-rest-framework/commit/3cd15fb1713dfc49e1bf1fd48045ca3ae5654e18. يوضح سجل الالتزام أنك على دراية بالمشكلة. أفترض أنك لا تنوي تغييره ، لذلك سأغلق هذه المشكلة.

أي شخص يجد هذا يجب أن يدرك أنه للسماح بفترات في urlconf التي تم إنشاؤها بواسطة جهاز التوجيه الافتراضي ، تحتاج إلى إضافة lookup_value_regex = '[^/]+' إلى مجموعة العرض الخاصة بك.

أتساءل لماذا تم استبعاد النقطة في المقام الأول ...

تتداخل نقاط Iirc مع القدرة على إضافة نوع محتوى الامتداد داخل عناوين url - ie /myendpoint.json

وإليك الالتزام الذي كسر هذه الوظيفة السابقة 3cd15fb . يوضح سجل الالتزام أنك على دراية بالمشكلة. أفترض أنك لا تنوي تغييره ، لذلك سأغلق هذه المشكلة.

أي شخص يجد هذا يجب أن يدرك أنه للسماح بفترات في urlconf التي تم إنشاؤها بواسطة جهاز التوجيه الافتراضي ، تحتاج إلى إضافة lookup_value_regex = '[^/]+' إلى مجموعة العرض الخاصة بك.

شكرا جزيلا!

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات