في مكان ما بين 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 = '[^/]+'
إلى مجموعة العرض الخاصة بك.
أتساءل لماذا تم استبعاد النقطة في المقام الأول ...
تتداخل نقاط Iirc مع القدرة على إضافة نوع محتوى الامتداد داخل عناوين url - ie /myendpoint.json
وإليك الالتزام الذي كسر هذه الوظيفة السابقة 3cd15fb . يوضح سجل الالتزام أنك على دراية بالمشكلة. أفترض أنك لا تنوي تغييره ، لذلك سأغلق هذه المشكلة.
أي شخص يجد هذا يجب أن يدرك أنه للسماح بفترات في urlconf التي تم إنشاؤها بواسطة جهاز التوجيه الافتراضي ، تحتاج إلى إضافة
lookup_value_regex = '[^/]+'
إلى مجموعة العرض الخاصة بك.
شكرا جزيلا!
التعليق الأكثر فائدة
وإليك الالتزام الذي كسر هذه الوظيفة السابقة https://github.com/tomchristie/django-rest-framework/commit/3cd15fb1713dfc49e1bf1fd48045ca3ae5654e18. يوضح سجل الالتزام أنك على دراية بالمشكلة. أفترض أنك لا تنوي تغييره ، لذلك سأغلق هذه المشكلة.
أي شخص يجد هذا يجب أن يدرك أنه للسماح بفترات في urlconf التي تم إنشاؤها بواسطة جهاز التوجيه الافتراضي ، تحتاج إلى إضافة
lookup_value_regex = '[^/]+'
إلى مجموعة العرض الخاصة بك.