Проверка формы на стороне сервера и данные POST - PullRequest
1 голос
/ 28 декабря 2010

У меня есть форма пользовательского ввода здесь:

http://www.7bks.com/create (требуется вход в Google)

При первом создании списка вас просят создать публичное имя пользователя.К сожалению, в настоящее время нет никаких ограничений, чтобы сделать это уникальным.В настоящее время я работаю над кодом для обеспечения уникальных имен пользователей и хотел бы узнать, как лучше всего это сделать.

Технические подробности: appengine, python, webapp framework

What I 'Планирование m выглядит примерно так:

  • сначала форма / create отправляет данные в / inputlist / (это то же самое, что и в настоящее время)
  • / inputlist / запрашивает хранилище данных дляданное имя пользователя.Если он уже существует, перенаправьте обратно на / create
  • , чтобы отобразить страницу / create со всей ранее указанной информацией, но с дополнительным сообщением об ошибке «это имя пользователя уже занято»

Myвопрос:

  1. Это лучший способ обработки проверки на стороне сервера?
  2. Каков наилучший способ хранения деталей списка, пока я проверяю и изменяю имя пользователя?

На мой взгляд, у меня есть 3 варианта для сохранения деталей списка, но я не уверен, что «лучше»:

  1. Сохранить детали списка в файле cookie сеанса (яиспользуя GAEsessions для файлов cookie)
  2. Определите отдельный класс POST для / create и отправьте данные списка обратно из / inputlist / на страницу / create (в настоящее время / create имеет только класс GET)
  3. Сохраните список в хранилище данных, хотя имя пользователя не уникально.

Большое спасибо за вашу помощь:)

Я симпатичнаяплохо знакомы с Python и кодирования в целом, так что если я пропустил сЧто-то очевидное мои извинения.

Том

PS - Я уверен, что в конце концов смогу это выяснить, но я не могу найти какую-либо документацию по POSTing данным с использованием фреймворка webapp appengine, который янужно для того, чтобы сделать решение 2 выше: s, может быть, вы могли бы указать мне правильное направление для этого тоже?Спасибо!

PPS - Это немного устарело, но вы можете примерно увидеть, как сейчас работают / create и / inputlist / code: 7bks.com Gist

Ответы [ 2 ]

1 голос
/ 29 декабря 2010

Я бы использовал Ajax для первоначальной проверки. Например, как только поле ввода имени пользователя теряет фокус, я на заднем плане отправляю на сервер вопрос, спрашивающий, свободно ли имя пользователя, и четко сигнализирую результат этого пользователю.

Проверка правильности формы через ajax - настоящее удовольствие для пользователя, если все сделано правильно.

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

jQuery имеет хороший плагин для проверки формы, если вы заинтересованы. http://docs.jquery.com/Plugins/validation.

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

О сохранении списка (перед тем, как сохранить его в хранилище данных). Если вы используете ajax для проверки имени пользователя, вы можете оставить другие поля отключенными до тех пор, пока не будет заполнено действительное имя пользователя. Не допускайте публикации формы с неверным именем пользователя!

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

1 голос
/ 28 декабря 2010

Можете ли вы использовать функциональность проверки формы django (которая, я думаю, должна просто абстрагироваться от вас): http://code.google.com/appengine/articles/djangoforms.html

Поиск на этой странице «добавления элемента» - он автоматически обрабатывает ошибки (которые, я думаю, могут включать неуникальное имя пользователя).

Предупреждение: тоже новичок ...:)

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