Django продезинфицирует Raw Queryset, который получает пользовательский ввод - PullRequest
0 голосов
/ 03 ноября 2018

Мне нужно выполнить RAW-запрос в Django, и мне нужно санировать ввод.

Я создаю запрос, начиная с базовой строки:

qs_str = 'SELECT c.name, l.adds FROM company inner join lace ...WHERE..'

Затем на основании нескольких условий я изменил:

if x:
  qs_str = ' '.join([qs_str, 'AND alpha=true '])
if self.request.GET.get('q'):
 qs_str = ' '.join([qs_str, 'AND name=self.request.GET.get('q')])
if self.request.GET.get('ct'):
 ...

Затем я создаю Queryset:

 qs = Company.objects.raw(qs_str)

Запрос изменяется на основе некоторых внутренних переменных и зависит от ввода пользователя. Конечно, пользовательский ввод, который мне нужно очистить.

Я знаю, что в Raw Queryset вы можете объявлять переменные,

name = %s'AND ads = %s, [lname, adds])

но поскольку они добавляются в конце, я должен выполнить проверку дважды:

  1. Первый раз, когда я создаю запрос
  2. Второй раз, чтобы узнать, какие переменные добавить после запроса

Это означает, что я делаю одни и те же чеки дважды, и у меня есть как минимум 5 чеков, поэтому, если возможно, избежать повторных проверок (если)

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