链接到列表中的实体
Linking to entity from list
我有一个咨询页面,其中列出了数据存储中的咨询。列表循环是这样的:
{% 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))
我想知道我如何使列表中的每个咨询成为一个link进入并查看有关该特定咨询的信息背后的基本概念。
我了解我需要使用密钥来检索实体,但我不确定该过程的其余部分。
编辑
我添加了以下行:
url = '/display_consult?key=%s' % consults.key.urlsafe()
到我的 ConsultsPage(列出咨询的地方)。处理程序现在看起来像这样:
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))
但是我得到这个错误:
url = '/display_consult?key=%s' % consults.key.urlsafe()
AttributeError: 'list' object has no attribute 'key'
此外,我在列出咨询的循环中的 link href 中放入了什么?是不是像:
href="consults/{{ url }}"
来自Retrieving Entities from Keys:
You can also use an entity's key to obtain an encoded string suitable
for embedding in a URL:
url_string = sandy_key.urlsafe()
This produces a result like agVoZWxsb3IPCxIHQWNjb3VudBiZiwIM
which
can later be used to reconstruct the key and retrieve the original
entity:
sandy_key = ndb.Key(urlsafe=url_string)
sandy = sandy_key.get()
因此,对于每个 consult
实体,您可以获得一个唯一的 URL,您可以在其中显示有关该实体的信息。例如,通过使用 URL 参数:
url = '/display_consult?key=%s' % consult.key.urlsafe()
并且在 /display_consult
页面处理程序中,您将获得这样的实体:
consult = ndb.Key(urlsafe=request.get('key')).get()
我有一个咨询页面,其中列出了数据存储中的咨询。列表循环是这样的:
{% 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))
我想知道我如何使列表中的每个咨询成为一个link进入并查看有关该特定咨询的信息背后的基本概念。
我了解我需要使用密钥来检索实体,但我不确定该过程的其余部分。
编辑 我添加了以下行:
url = '/display_consult?key=%s' % consults.key.urlsafe()
到我的 ConsultsPage(列出咨询的地方)。处理程序现在看起来像这样:
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))
但是我得到这个错误:
url = '/display_consult?key=%s' % consults.key.urlsafe()
AttributeError: 'list' object has no attribute 'key'
此外,我在列出咨询的循环中的 link href 中放入了什么?是不是像:
href="consults/{{ url }}"
来自Retrieving Entities from Keys:
You can also use an entity's key to obtain an encoded string suitable for embedding in a URL:
url_string = sandy_key.urlsafe()
This produces a result like
agVoZWxsb3IPCxIHQWNjb3VudBiZiwIM
which can later be used to reconstruct the key and retrieve the original entity:sandy_key = ndb.Key(urlsafe=url_string) sandy = sandy_key.get()
因此,对于每个 consult
实体,您可以获得一个唯一的 URL,您可以在其中显示有关该实体的信息。例如,通过使用 URL 参数:
url = '/display_consult?key=%s' % consult.key.urlsafe()
并且在 /display_consult
页面处理程序中,您将获得这样的实体:
consult = ndb.Key(urlsafe=request.get('key')).get()