python - 如何从 index.html 中的模板返回 appengine 数据存储对象的键?

标签 python google-app-engine templates post request

我希望我的用户能够通过单击每个对象旁边的按钮来修改显示的数据存储对象的属性。

为了做到这一点,我相信我需要在用户单击按钮时从 index.html 中获取数据存储对象的 ID:

来自 index.html:

{% for polyhedron in polyhedrons %}
    {{ polyhedron.name }}
    {{ polyhedron.color }} 
    <form action="/correction" method=post>
        <input type=submit id="{{ polyhedron.key }}" name=content value="red">
        <input type=submit id="{{ polyhedron.key }}" name=content value="green">
    </form>

处理程序:

class CorrectionHandler(webapp2.RequestHandler):
    def post(self):
        polyhedron_object = self.request.get("id")
        polyhedron_object.color = self.request.get('content')

但是,self.request.get("id") 根本不返回任何内容。

最佳答案

我会为对象的 ID 使用隐藏的输入。我不确定你是否使用 db.Modelndb.Model .如果你为你的对象使用 db.Model,我会这样做:

{% for polyhedron in polyhedrons %}
{{ polyhedron.name }}
{{ polyhedron.color }} 
<form action="/correction" method=post>
    <input type="hidden" name="key" value="{{ polyhedron.key().id() }}">
    <input type="submit" id="{{ polyhedron.key().id() }}" name="color" value="red">
    <input type="submit" id="{{ polyhedron.key().id() }}" name="color" value="green">
</form>

如果你正在使用 ndb.Model,我会这样做

{% for polyhedron in polyhedrons %}
{{ polyhedron.name }}
{{ polyhedron.color }} 
<form action="/correction" method=post>
    <input type="hidden" name="key" value="{{ polyhedron.key.urlsafe() }}">
    <input type="submit" id="{{ polyhedron.key.urlsafe() }}" name="color" value="red">
    <input type="submit" id="{{ polyhedron.key.urlsafe() }}" name="color" value="green">
</form>

如果您使用 db.Model,您的处理程序是:

class CorrectionHandler(webapp2.RequestHandler):
    def post(self):
        polyhedron_object_key = self.request.get("key")
        polyhedron_object = Polyhedron.get_by_id(polyhedron_object_key)
        polyhedron_object.color = self.request.get('color')

如果您使用的是 ndb.Model,您的处理程序是:

class CorrectionHandler(webapp2.RequestHandler):
    def post(self):
        polyhedron_object_key = self.request.get("key")
        polyhedron_object = ndb.Key(urlsafe=polyhedron_object_key).get()
        polyhedron_object.color = self.request.get('color')

关于python - 如何从 index.html 中的模板返回 appengine 数据存储对象的键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15282582/

相关文章:

c++ - 返回模板的嵌套类时出现语法错误

python - 用于显示 Django 版本的 Django 模板标签

python - 使用 Python 通过串行通信的最小延迟

python - 使用 sqlalchemy 从 PostgreSQL 查询返回 Pandas 数据框

python - 访问 Google App Engine 开发服务器上的 BigQuery

google-app-engine - UnicodeEncodeError 谷歌应用引擎

Python正则表达式-提取浮点模式

python - 我可以使用别名从 python 脚本执行程序吗

java - 如何从代码中获取跟踪ID?

c++ - 在 GTEST (Googletest) 中使用模板