Python 2.7 从列表链接到实体

Python 2.7 从列表链接到实体,python-2.7,google-app-engine,google-cloud-datastore,app-engine-ndb,Python 2.7,Google App Engine,Google Cloud Datastore,App Engine Ndb,我有一个咨询页面,列出数据存储中的咨询。列表循环如下所示: {% for consult in consults %} <tr> <td><a href="consults/#">{{ consult.consult_date }}</a></td> <td>{{ consult.consult_time }}</td> <td>{{ consult.patient_first }}&l

我有一个咨询页面,列出数据存储中的咨询。列表循环如下所示:

{% for consult in consults %}
 <tr>
  <td><a href="consults/#">{{ consult.consult_date }}</a></td>
  <td>{{ consult.consult_time }}</td>
  <td>{{ consult.patient_first }}</td>
  <td>{{ consult.patient_last }}</td>
  <td><span class="badge badge-warning">{{ consult.consult_status }}</span></td>
 </tr>
{%endfor%}
class ConsultsPage(webapp2.RequestHandler):
    def get(self):
        consults = Consults.query().fetch(5)
        consults_dic = {"consults" : consults}
        template = JINJA_ENVIRONMENT.get_template('/templates/consults.html')
        self.response.out.write(template.render(**consults_dic))
class ConsultsPage(webapp2.RequestHandler):
    def get(self):
        consults = Consults.query().fetch(5)
        consults_dic = {"consults" : consults}
        url = '/display_consult?key=%s' % consults.key.urlsafe()
        template = JINJA_ENVIRONMENT.get_template('/templates/consults.html')
        self.response.out.write(template.render(**consults_dic))
consult = ndb.Key(urlsafe=request.get('key')).get()
我想知道我如何使列表中的每个咨询成为一个链接,以进入并查看有关该特定咨询的信息的基本概念

我知道我需要使用密钥来检索实体,但我不确定该过程的其余部分

编辑 我增加了一行:

url = '/display_consult?key=%s' % consults.key.urlsafe()
转到我的咨询页面(咨询人列表)。处理程序现在如下所示:

{% for consult in consults %}
 <tr>
  <td><a href="consults/#">{{ consult.consult_date }}</a></td>
  <td>{{ consult.consult_time }}</td>
  <td>{{ consult.patient_first }}</td>
  <td>{{ consult.patient_last }}</td>
  <td><span class="badge badge-warning">{{ consult.consult_status }}</span></td>
 </tr>
{%endfor%}
class ConsultsPage(webapp2.RequestHandler):
    def get(self):
        consults = Consults.query().fetch(5)
        consults_dic = {"consults" : consults}
        template = JINJA_ENVIRONMENT.get_template('/templates/consults.html')
        self.response.out.write(template.render(**consults_dic))
class ConsultsPage(webapp2.RequestHandler):
    def get(self):
        consults = Consults.query().fetch(5)
        consults_dic = {"consults" : consults}
        url = '/display_consult?key=%s' % consults.key.urlsafe()
        template = JINJA_ENVIRONMENT.get_template('/templates/consults.html')
        self.response.out.write(template.render(**consults_dic))
consult = ndb.Key(urlsafe=request.get('key')).get()
但是我得到了这个错误:

url = '/display_consult?key=%s' % consults.key.urlsafe()
AttributeError: 'list' object has no attribute 'key'
此外,我在列出咨询的循环中的链接href中添加了什么内容?是不是有点像:

href="consults/{{ url }}"
发件人:

您还可以使用实体的密钥来获取合适的编码字符串 要嵌入URL,请执行以下操作:

url_string = sandy_key.urlsafe()
这会产生类似于agVoZWxsb3IPCxIHQWNjb3VudBiZiwIM的结果 以后可用于重建密钥和检索原始密钥 实体:

sandy_key = ndb.Key(urlsafe=url_string)
sandy = sandy_key.get()
因此,对于每个
consult
实体,您可以获得一个唯一的URL,用于显示有关该实体的信息。例如,通过使用URL参数:

url = '/display_consult?key=%s' % consult.key.urlsafe()
/display\u consult
页面处理程序中,您将获得如下实体:

{% for consult in consults %}
 <tr>
  <td><a href="consults/#">{{ consult.consult_date }}</a></td>
  <td>{{ consult.consult_time }}</td>
  <td>{{ consult.patient_first }}</td>
  <td>{{ consult.patient_last }}</td>
  <td><span class="badge badge-warning">{{ consult.consult_status }}</span></td>
 </tr>
{%endfor%}
class ConsultsPage(webapp2.RequestHandler):
    def get(self):
        consults = Consults.query().fetch(5)
        consults_dic = {"consults" : consults}
        template = JINJA_ENVIRONMENT.get_template('/templates/consults.html')
        self.response.out.write(template.render(**consults_dic))
class ConsultsPage(webapp2.RequestHandler):
    def get(self):
        consults = Consults.query().fetch(5)
        consults_dic = {"consults" : consults}
        url = '/display_consult?key=%s' % consults.key.urlsafe()
        template = JINJA_ENVIRONMENT.get_template('/templates/consults.html')
        self.response.out.write(template.render(**consults_dic))
consult = ndb.Key(urlsafe=request.get('key')).get()

添加了进一步的信息您可以为每个
咨询调用
key.urlsafe()
,当然不是为
咨询调用
-您想要为每个咨询调用一个链接,不是吗?您甚至可以在模板内调用它,具体取决于您的模板语言。请参阅,我刚刚将consults更改为consult,并得到错误名称error:global name“consult”未定义。是的,我想为每一个链接。那么为什么你只创建一个url?您可以为每个实体创建一个,并通过
consults\u dic
将其传递给模板,或者在模板本身内部创建一个,就像您对
consult
info的其余部分所做的那样。好的,我将在模板循环内创建url。我已将其添加到href中,如下所示:href=“/display\u consult?key=%s%consults.key.urlsafe()”但我认为我的语法不正确?