Забаненные IP-адреса в форме проверки Django - PullRequest
8 голосов
/ 18 февраля 2009

Я пытаюсь проверить форму, например, если IP-адрес пользователя (request.META['REMOTE_ADDR']) находится в таблице BlockedIPs, проверка не будет выполнена Однако у меня нет доступа к переменной request в Form. Как мне это сделать? Спасибо.

1 Ответ

9 голосов
/ 18 февраля 2009

Сделайте его доступным для вашей формы, переопределив __init__, чтобы его можно было передать во время создания (или вы могли просто передать сам IP):

from django import forms

class YourForm(forms.Form)
    # fields...

    def __init__(self, request, *args, **kwargs):
        self.request = request
        super(YourForm, self).__init__(*args, **kwargs)

    # validation methods...

Теперь вам просто нужно передать объект request в качестве первого аргумента при инициализации формы, и ваши пользовательские методы проверки будут иметь к нему доступ через self.request:

if request.method == 'POST':
    form = YourForm(request, request.POST)
    # ...
else:
    form = YourForm(request)
# ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...