djangorestframework==2.3.13
とdjangorestframework==2.4.4
の間のどこかで、ModelViewSetに対して生成されたURL設定が「。」を除外するように変更されました。 (ピリオド/ドット)文字。 これは、カスタムlookup_fieldをドメイン名、またはこの文字を含むその他の文字列にすることはできないことを意味します。
次のようなビューセットが与えられます。
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']
[^]
は除外セットを指定するため、 [^/]
はすべてのスラッシュを除外し、 [^/.]
はスラッシュとピリオド(ドット)文字を除外します。
URIの期間を制限する理由はないと思います。この変更は、元に戻す必要があります。
そして、これがこの以前の機能を壊したコミットですhttps://github.com/tomchristie/django-rest-framework/commit/3cd15fb1713dfc49e1bf1fd48045ca3ae5654e18。 コミットログは、問題を認識していることを示しています。 変更するつもりはないと思いますので、この号を締めくくります。
これを見つけた人は誰でも、デフォルトルーターによって生成されたurlconfで期間を許可するには、ビューセットにlookup_value_regex = '[^/]+'
を追加する必要があることに注意してください。
そもそもなぜドットが除外されたのかしら…
Iircドットは、URL内に拡張コンテンツタイプを追加する機能を妨害します-つまり、/ myendpoint.json
そして、これがこの以前の機能3cd15fbを壊したコミットです。 コミットログは、問題を認識していることを示しています。 変更するつもりはないと思いますので、この号を締めくくります。
これを見つけた人は誰でも、デフォルトルーターによって生成されたurlconfで期間を許可するには、ビューセットに
lookup_value_regex = '[^/]+'
を追加する必要があることに注意してください。
本当にありがとう!
最も参考になるコメント
そして、これがこの以前の機能を壊したコミットですhttps://github.com/tomchristie/django-rest-framework/commit/3cd15fb1713dfc49e1bf1fd48045ca3ae5654e18。 コミットログは、問題を認識していることを示しています。 変更するつもりはないと思いますので、この号を締めくくります。
これを見つけた人は誰でも、デフォルトルーターによって生成されたurlconfで期間を許可するには、ビューセットに
lookup_value_regex = '[^/]+'
を追加する必要があることに注意してください。