Bagaimana untuk menggunakan url dan kelas yang sama untuk meletakkan, dapatkan, siarkan, padam fungsi dalam api asas kelas drf

PHPz
Lepaskan: 2024-02-08 20:45:13
ke hadapan
439 orang telah melayarinya

如何在 drf 类基础 api 中对 put、get、post、delete 函数使用相同的 url 和类

Kandungan soalan

Dalam fail pandangan saya, saya mahukan logik ini:

Artikel (apiview):

def get(self, reqeust, id):
    #logic
def put(self, request, id):
    #logic  
def post(self, requst, id):
    #logic
def delete(self, request, id):
    #logic
Salin selepas log masuk

Saya mahukan URL pemegang seperti ini:

/articles/int:pk # Paparkan artikel dengan id=pk /articles/add # Tambah artikel ke pangkalan data Tunggu...

Tetapi saya ada soalan, saya tidak mahu menggunakan kelas yang berbeza untuk url yang berbeza, pada masa yang sama saya mahu jika saya memanggil /articles/add , panggilan kaedah pos, apakah cara terbaik untuk mencapai ini?

sry, saya sangat baru dengan python dan drf, saya akan menghargai bantuan tentang cara terbaik untuk melakukan ini,

Adakah saya melakukan perkara ini secara salah? Saya hanya tidak mahu menggunakan drf dalam kaedah apiview untuk menyediakan kelas yang berbeza untuk setiap siaran, dapatkan...


Jawapan Betul


Apa yang anda huraikan di sini sudah wujud: iaitu ViewSet  [drf-doc]. Ini menggabungkan kaedah yang berbeza dalam kelas yang sama. Biasanya, gunakan serializer yang sama dsb. Jadi ia mengelompokkan secara logik apa yang selalunya hampir sama.

Untuk menghalakan item dengan betul, Router [drf-doc] digunakan untuk membuat laluan yang sepadan. Sesetengahnya mempunyai kunci utama, seperti GET, PUT, PATCH dan DELETE, manakala POST tidak. Anda kemudian boleh menyesuaikannya lagi.

Atas ialah kandungan terperinci Bagaimana untuk menggunakan url dan kelas yang sama untuk meletakkan, dapatkan, siarkan, padam fungsi dalam api asas kelas drf. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan