Джанго - проверка данных - PullRequest
       1

Джанго - проверка данных

1 голос
/ 23 ноября 2010

в моем приложении django я разрешаю пользователям вырезать и вставлять некоторые данные json в текстовое поле для загрузки в базу данных для сохранения.

Я хотел бы проверить данные json, прежде чем сохранять их в своей базе данных. Нужно ли писать собственный код для проверки каждого поля или есть какая-то форма API, которую я могу использовать для проверки данных?

Ответы [ 3 ]

2 голосов
/ 23 ноября 2010

Создайте форму с методами проверки

http://docs.djangoproject.com/en/dev/topics/forms/

или используйте форму модели:

http://docs.djangoproject.com/en/dev/topics/forms/modelforms/

1 голос
/ 23 ноября 2010

Если он декодирует , то я думаю, что это JSON ...

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

1 голос
/ 23 ноября 2010

Поскольку вы разрешаете пользователю вводить (в основном) произвольные данные, необходимо принять меры против SQL InJection или XSS . Django поддерживает оба, вот как -

  1. В вашем шаблоне рядом с формой поместите csrf_token , который запрещает CSRF .
  2. Чтобы предотвратить атаки SQL-инъекций, поместите фильтр urlencode в свои шаблоны, где это применимо. Не очень, но это защищает от таких случаев, как - превращает ваши апострофы в% 27, делая их безвредными
  3. Также, если у вас есть свой form.py как ./app/form.py, тогда при определении формы -
class RegistrationForm(forms.Form):
    username  = forms.CharField(label='Username', max_length=30)
    def clean_username(self):
        username = self.cleaned_data['username']
        # do any more processing you need.
  1. Также, если вы используете JSON, обязательно используйте встроенные модули для этого, чтобы риск переизобретения колеса.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...