Поднятие событий и постоянство объектов в Джанго - PullRequest
1 голос
/ 13 июня 2010

У меня есть хитрая проблема с Django, которая не возникала у меня, когда я ее разрабатывал. Мое приложение Django позволяет пользователю зарегистрироваться и сохранить свои учетные данные для входа на сайты. Приложение Django в основном позволяет пользователю осуществлять поиск на этом другом сайте (удаляя с него содержимое) и возвращает результат пользователю. Для каждого запроса он выполняет пару запросов другого сайта. Казалось, что это работает нормально, но иногда другой сайт дает мне капчу. Я написал код для получения изображения CAPTCHA, и мне нужно вернуть его пользователю, чтобы он мог его ввести, но я не знаю, как.

Мой поисковый запрос (запрос, имя пользователя и пароль) в моем приложении Django передается представлению, которое, в свою очередь, вызывает серверную часть, которая выполняет очистку / поиск. Когда обнаруживается CAPTCHA, я бы хотел вызвать событие на стороне клиента или что-то в этих строках и отобразить CAPTCHA для пользователя и ждать ввода пользователя, чтобы я мог возобновить свой поиск. Мне бы как-то нужно было сохранять свой бэкэнд-объект между вызовами. Я пытался протравить его, но он не работает, потому что я получаю ошибку Can't pickle 'lock' object. Я не знаю, чтобы реализовать это, хотя. Любая помощь / идеи?

Спасибо за тонну.

Ответы [ 2 ]

2 голосов
/ 13 июня 2010

Что еще нужно запомнить: вам нужно поддерживать сеанс браузера с удаленным сайтом, чтобы сайт знал, какую CAPTCHA вы пытаетесь решить. Множество веб-клиентов позволяют вам хранить ваши куки, и я бы посоветовал вам сбросить их в сеансе Django пользователя, для которого вы просматриваете экран. Затем загрузите их обратно при отправке CAPTCHA.

Вот как я вижу полный поворот событий:

  1. Пользователь размещает поисковый запрос
  2. Запрос удаленного сайта
  3. Если не CAPTCHA, GOTO #10
  4. Сохранение удаленных файлов cookie в локальном сеансе
  5. Скачать картинку с картинки (возможно, для сессии тоже?)
  6. Подарите CAPTCHA своему пользователю и форму
  7. Пользователь отправляет CAPTCHA
  8. Вы загружаете куки с # 4 и отправляете форму как ПОЧТА
  9. GOTO #3
  10. Обработайте данные со страницы, подарите их самому себе.
0 голосов
/ 14 июля 2011

request.session['name'] = variable будет хранить его затем,

variable = request.session['name'] найдет его. Помните, однако, что это не база данных, а просто хранилище сеансов, и на него нельзя полагаться ни в чем критическом

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