Безопасное хранение данных из GET-запроса - Django

Правильно,

Допустим, нам нужно создать сайт на Django, где люди могут забронировать домик на выходные.

Мы добавляем форму поиска на главной странице, где люди могут заполнить дату заезда и выезда. чтобы отфильтровать все доступные домики.

Мы используем общий Listview для создания обзора всех домиков и переписываем queryset, чтобы получить параметры поиска из GET-запроса для создания фильтрованного представления.

views.py

class ListingsView(ListView):
    """Return all listings"""
    model = Listing
    template_name = 'orders/listings.html'

    def get_queryset(self):
        """
        Visitors can either visit the page with- or without a search query
        appended to the url. They can either use the form to perform a search
        or supply an url with the appropriate parameters.
        """
        # Get the start and end dates from the url
        check_in = self.request.GET.get('check_in')
        check_out = self.request.GET.get('check_out')

        queryset = Calendar.objects.filter(
            date__gte=check_in,
            date__lt=check_out,
            is_available=True
        )

        return queryset

Теперь этот код упрощен для удобства чтения, но я хотел бы сохранить дату заселения и выселения, которую ищут люди.

Обновленный views.py

class ListingsView(ListView):
    """Return all listings"""
    model = Listing
    template_name = 'orders/listings.html'

    def get_queryset(self):
        """
        Visitors can either visit the page with- or without a search query
        appended to the url. They can either use the form to perform a search
        or supply an url with the appropriate parameters.
        """
        # Get the start and end dates from the url
        check_in = self.request.GET.get('check_in')
        check_out = self.request.GET.get('check_out')

        queryset = Calendar.objects.filter(
            date__gte=check_in,
            date__lt=check_out,
            is_available=True
        )

        Statistics.objects.create(
            check_in=check_in,
            check_out=check_out
        )

        return queryset

Мы создали модель "Статистика" для хранения всех дат, которые ищут люди.

Мы добавляем данные в модель с помощью GET-запроса, и мне интересно, правильно ли мы поступаем? Не создаем ли мы уязвимости?

В форме поиска используются скрытые текстовые входы, поэтому всегда есть возможность не знать, какие данные поступают. Достаточно ли очистки или проверки типа данных из этих вводимых данных, или они всегда будут в строковом формате?

Есть идеи?

Приветствую,

Вернуться на верх