Django-rest-framework: karakter titik dikecualikan dari konfigurasi url lookup_field viewset

Dibuat pada 6 Nov 2014  ·  4Komentar  ·  Sumber: encode/django-rest-framework

Di suatu tempat antara djangorestframework==2.3.13 dan djangorestframework==2.4.4 yang dihasilkan url conf untuk ModelViewSet telah berubah untuk mengecualikan '.' (titik / titik) karakter. Ini berarti bahwa bidang_pencarian khusus Anda tidak boleh berupa nama domain, atau string lain yang menyertakan karakter ini.

Diberikan set tampilan seperti:

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

Url berikut dibuat ( 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']

Dan sekarang dengan djangorestframework==2.4.4 :

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

[^] menentukan set pengecualian, jadi [^/] mengecualikan semua garis miring ke depan, sementara [^/.] mengecualikan garis miring ke depan dan karakter titik (titik).

Saya percaya tidak ada alasan untuk membatasi periode di URI dan perubahan ini harus dikembalikan.

Komentar yang paling membantu

Dan inilah komit yang merusak fungsi sebelumnya https://github.com/tomchristie/Django-rest-framework/commit/3cd15fb1713dfc49e1bf1fd48045ca3ae5654e18. Log komit menunjukkan bahwa Anda mengetahui masalah ini. Saya kira Anda tidak bermaksud untuk mengubahnya, jadi saya akan menutup masalah ini.

Siapa pun yang menemukan ini, ketahuilah bahwa untuk mengizinkan periode di urlconf yang dihasilkan oleh router default, Anda perlu menambahkan lookup_value_regex = '[^/]+' ke viewset Anda.

Semua 4 komentar

Dan inilah komit yang merusak fungsi sebelumnya https://github.com/tomchristie/Django-rest-framework/commit/3cd15fb1713dfc49e1bf1fd48045ca3ae5654e18. Log komit menunjukkan bahwa Anda mengetahui masalah ini. Saya kira Anda tidak bermaksud untuk mengubahnya, jadi saya akan menutup masalah ini.

Siapa pun yang menemukan ini, ketahuilah bahwa untuk mengizinkan periode di urlconf yang dihasilkan oleh router default, Anda perlu menambahkan lookup_value_regex = '[^/]+' ke viewset Anda.

Saya bertanya-tanya mengapa titik dikecualikan di tempat pertama ...

Titik Iirc mengganggu kemampuan untuk menambahkan jenis konten ekstensi dalam url - yaitu /myendpoint.json

Dan inilah komit yang merusak fungsi sebelumnya 3cd15fb . Log komit menunjukkan bahwa Anda mengetahui masalah ini. Saya kira Anda tidak bermaksud untuk mengubahnya, jadi saya akan menutup masalah ini.

Siapa pun yang menemukan ini, ketahuilah bahwa untuk mengizinkan periode di urlconf yang dihasilkan oleh router default, Anda perlu menambahkan lookup_value_regex = '[^/]+' ke viewset Anda.

Terima kasih banyak!

Apakah halaman ini membantu?
0 / 5 - 0 peringkat