您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Google App Engine ReferenceProperty关系

Google App Engine ReferenceProperty关系

具有副作用的东西(例如更改存储(例如通过创建新对象)) 应该是HTTP GET- GET本质上应该只执行“读取”操作。这不是徒有其事,它是HTTP语义的关键部分- 浏览器,缓存,代理等都可以作为只读操作(例如,通过缓存结果并且如果请求不传递请求到服务器,则作为只读操作)可以从缓存中满足)。@H_301_5@

要进行修改,请使用HTTP动词,例如POST(之所以流行,主要是因为所有浏览器都正确实现了它),或者用于特殊操作PUT(用于创建新对象)或DELETE(用于删除对象)。我假设您将要使用POST来支持各种浏览器。@H_301_5@

要从浏览器获取POST,您需要Javascript向导或带有method = post的普通旧表单-为了简单起见,我将假定后者。@H_301_5@

如果您使用的是Django 1.0(应用引擎现在支持),则它具有自己的机制,可以基于模型制作,验证和接受表单。其他框架也有自己类似的高级层。@H_301_5@

如果你想避免“富”框架你必须手工模板HTML表单来实现,引导他们(通过某种形式的URL调度,如在app.yaml中的),以与实施你的处理程序def post(self):,得到来自请求的数据,对其进行验证,形成新对象,将其放入,显示一些确认页面。@H_301_5@

您不清楚程序的哪一部分?您问题的标题专门针对参考属性,但我不确定它们特别给您带来什么问题-从问题的文字来看,您似乎对它们有正确的选择。@H_301_5@

:OP现在已在注释中澄清了他的问题是如何制作类似以下内容内容:@H_301_5@

"<a href="/newtopic?id={{group.key.id}}" >New topic </a>"

工作。有多种方法可以做到这一点。如果newtopic URL由静态表单提供,则该表单的“操作”处理程序可以id=通过Referer:标头返回(臭名昭著但无法解决错误拼写),但这有点笨拙且脆弱。更好的方法是让处理程序提供newtopic URI,该处理程序从请求中def get获取id=并将其插入到生成的表单模板中,例如,在隐藏的输入字段中。使该表单的模板包含(在其他字段中):@H_301_5@

<INPUT TYPE=hidden NAME=thegroupid VALUE={{ theid }}> </INPUT>

放置theid在您用来渲染该模板的上下文中,并且最终将def post收到表单请求的操作的请求。@H_301_5@

Go 2022/1/1 18:41:47 有327人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶