ฉันต้องการเพิ่มตัวเลือกของตัวเองที่นี่ บางคนอาจสงสัยว่าจะกำหนดเส้นทางเป็น urls.py เช่น
domain/search/?q=CA
เพื่อให้เราสามารถเรียกใช้แบบสอบถาม
ความจริงก็คือไม่จำเป็นต้องตั้งค่าเส้นทางใน urls.py สิ่งที่คุณต้องตั้งค่าเป็นเพียงเส้นทางใน urls.py
urlpatterns = [
path('domain/search/', views.CityListView.as_view()),
]
และเมื่อคุณป้อนhttp: // servername: พอร์ต / โดเมน / search / q = CA ส่วนของแบบสอบถาม '? q = CA' จะถูกจองโดยอัตโนมัติในตารางแฮชซึ่งคุณสามารถอ้างอิงได้
request.GET.get('q', None).
นี่คือตัวอย่าง (views.py)
class CityListView(generics.ListAPIView):
serializer_class = CityNameSerializer
def get_queryset(self):
if self.request.method == 'GET':
queryset = City.objects.all()
state_name = self.request.GET.get('q', None)
if state_name is not None:
queryset = queryset.filter(state__name=state_name)
return queryset
นอกจากนี้เมื่อคุณเขียนสตริงแบบสอบถามใน Url
http://servername:port/domain/search/?q=CA
อย่าห่อสตริงแบบสอบถามในเครื่องหมายคำพูดเช่น
http://servername:port/domain/search/?q="CA"