Как получить доступ к объекту запроса при проверке формы django.contrib.comments? - PullRequest
4 голосов
/ 08 октября 2010

Я хочу запустить проверку IP-адреса, когда пользователи публикуют комментарии django.

Я могу легко переопределить и настроить форму, используемую django.comments, но мне нужен доступ к объекту запроса, чтобы добавить IP-тест в его clean (). Можно ли получить доступ к этому чистым способом?

Альтернативой может быть проверка IP при получении сигнала сохранения, но тогда, похоже, единственный способ прервать сохранение - это вернуть код 400 пользователю.

Ответы [ 3 ]

1 голос
/ 08 октября 2010

Структура комментариев предоставляет сигнал comment_will_be_posted: http://docs.djangoproject.com/en/1.2/ref/contrib/comments/signals/#comment-will-be-posted

Если вы зарегистрируетесь по этому сигналу, вашему обработчику будет передан (еще не сохранен) объект комментария и запрос в качестве аргументов.Если ваш обработчик возвращает False, представление post_comment отвечает с CommentPostBadRequest, как и при любых других ошибках, таких как неудачная проверка формы.

0 голосов
/ 08 октября 2010
0 голосов
/ 08 октября 2010

Один из возможных способов, но у вас все еще нет объекта запроса на этом уровне проверки ...

class SomeForm(forms.ModelForm):
    somefield = forms.CharField(...)

    def check_somefield(self):
        somefield = self.cleaned_data['somefield']
        ...  #do what you want
    return somefield

Надеюсь, это поможет, или я не понимаю, что вы хотите правильно.

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