Tôi muốn thêm một số tùy chọn của mình ở đây. Ai đó sẽ tự hỏi làm thế nào để thiết lập đường dẫn trong urls.py, chẳng hạn như
domain/search/?q=CA
để chúng ta có thể gọi truy vấn.
Thực tế là KHÔNG cần thiết phải đặt tuyến đường như vậy trong urls.py. Những gì bạn cần đặt chỉ là tuyến đường trong urls.py
urlpatterns = [
path('domain/search/', views.CityListView.as_view()),
]
và khi bạn nhập vào http: // servername: port / miền / tìm kiếm / q = CA . Phần truy vấn '? Q = CA' sẽ được tự động dành riêng trong bảng băm mà bạn có thể tham khảo
request.GET.get('q', None).
Dưới đây là một ví dụ (lượt xem)
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
Ngoài ra, khi bạn viết chuỗi truy vấn bằng Url
http://servername:port/domain/search/?q=CA
Không gói chuỗi truy vấn trong dấu ngoặc kép, vd
http://servername:port/domain/search/?q="CA"