Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk menggunakan url dan kelas yang sama untuk meletakkan, dapatkan, siarkan, padam fungsi dalam api asas kelas drf

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

PHPz
PHPzke hadapan
2024-02-08 20:45:13445semak imbas

如何在 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

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!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam