Django - walidowanie query params z requestu

0

Jak zwalidować query params z requestu:

przykład chcę w parametrach ustawić flagi ktore mają mieć wartość "true" lub "false" np: www.domain.com/resource?show_category=true&show_type=false

Pytanie jak w widoku walidować, że te parametry są faktycznie wartości "true" i "false", (chciałbym zwrócić odpowiedni kod błędu jeśli klient ustawi flage na jakieś randomowe "foobar" czy cokolwiek innego). Oczywiście mogę to zrobić prostym Pythonowym kodem, ale czy aby Django nie ma takiej możliwości?

Nie mogłem znaleźć po krótkim reasearchu i aż mnie to zdziwiło. Już nawet w flasku w którym chwile nie robiłem, z tego co pamiętam były tego typu rzeczy.
Django-rest-framework pozostaje?

0

Django-filter albo przepuszczenie przez form i zwalidowanie przez niego tez być ok

0
Rado95 napisał(a):

Django-filter albo przepuszczenie przez form i zwalidowanie przez niego tez być ok

a django-filter czasem nie jest typowo do filtrowania modeli? Ja tutaj mam sytuację kiedy parametry z query params nie są częścią modelu właśnie.

Co do tematu jeszcze:
Próbuję jeszcze rozkminić użycie Serializera lub Parsera do tego celu z DRF, ale nie rozumiem tego do końca:

Serializer musi implementować create i update metody ktore w ich przypadkach działają na modelu, a ja tej funkcjonalnosci w tym wypadku nie potrzebuję, bo chcę jedynie zwalidowanie wartosci query params, stąd zastanawiam się czy to aby na pewno dobre rozwiązanie? - https://www.django-rest-framework.org/tutorial/1-serialization/#creating-a-serializer-class

a co do parsera z DRF https://www.django-rest-framework.org/api-guide/parsers/#example : to też trochę tego nie rozumiem - albo nie widzę przykładu na ich stronie odpowiedniego, albo w tym wypadku to jest do czegoś innego niż myślę, w ich przykładzie nie widzę logiki opartej o żadne Fieldy, czyli właściwie i tak trzeba by było pisać z palca sprawdzanie w ifie typu: if show_category != 'true' or show_category != 'false': return HttpResponse(status_code=4xx)

0

To może zwykły form?

0

@anonimowy: brzmi trochę jak workaround... Naprawdę nie ma dedykowanej funkcjonalnosci w Django/DRF na to? nawet jeszcze nie podałem drugiej cześci problemu, czyli, że fajnie jakby oprócz tych flag można jeszcze było dodać parametry odpowiedzialne za filtrowanie po polach modelu. Wtedy się można bawić customowo trochę, ale przy takim zwykłym zwalidowaniu dwóch parametrów?

Bo rozumiem, że chodziło Ci o coś takiego:

form = MyCustomForm(request.GET)
form.is_valid()

?

W sumie, może nie takie najgorsze rozwiązanie, tylko i tak mam wrażenie, że nie wiem... trochę "nieeleganckie":P

0

Ja zazwyczaj robiłem reuest.GET.get("show_category", False) czy coś w tym stylu, nie było potrzeby żeby zwracać błąd i tak zazwyczaj jest, że nie musisz go zwracać

0

Nie wiem jak wygląda Twoje views, ale zawsze można zrobić cos na zasadzie:

def jakisTamView(request, show_category, show_typ):
   if request.method == "GET":
      sprawdzenie argumentów

1 użytkowników online, w tym zalogowanych: 0, gości: 1