我在这里有一个用户输入表单:
http://www.7bks.com/create(需要Google登录)
首次创建列表时,系统会要求您创建公共用户名。不幸的是,目前没有任何限制使这个独特。我正在研究代码以强制执行唯一的用户名,并希望了解最佳方法。
技术细节:appengine,python,webapp framework
我的计划是这样的:
我的问题是:
在我看来,我有3个选项来存储列表细节,但我不确定哪个是“最好的”:
非常感谢你的帮助:))
我对python和编码很新,所以如果我错过了一些明显的道歉,我会道歉。
汤姆
PS - 我确信我最终可以搞清楚,但是我找不到任何关于使用webapp appengine框架发布数据的文档,我需要这个框架来做上面的解决方案2:s也许你可以指点我那个方向也正确吗?谢谢!PPS - 现在有点过时,但您可以在此处大致了解/ create和/ inputlist /代码的工作原理:7bks.com Gist
答案 0 :(得分:1)
您可以使用django表单验证功能(我认为应该只是抽象所有这些): http://code.google.com/appengine/articles/djangoforms.html
在该页面中搜索“添加项目” - 它会自动处理错误(我认为可能包含非唯一用户名)。
警告:也是初学者......:)
答案 1 :(得分:1)
我会使用Ajax进行初始验证。例如,一旦用户名输入框失去焦点,我就会在后台向服务器发送一个问题,询问用户名是否空闲,并清楚地向用户发出结果信号。
如果正确完成,通过ajax完成表单验证对用户来说是一种真正的用户体验。
当然,在保存任何数据之前,我肯定会重做验证服务器端以避免请求欺骗。
如果你感兴趣的话,jQuery有一个很好的表单验证插件。 http://docs.jquery.com/Plugins/validation。在我的职业生涯中,我从来没有得到验证服务器端以及客户端。
关于列表的存储(在将其保留到数据存储区之前)。如果使用ajax验证用户名,则可以保留其他字段,直到填写有效的用户名为止。不要允许使用无效的用户名发布表单!
在大多数情况下,这可能会解决您的问题。当您的第一个用户仍在填写他的书籍列表时,其他人很可能会窃取用户名。如果你想解决这个问题,我建议你只需要根据用户的请求显示列表。他只是把它发给你,你不必把它保存在其他任何地方。