1

我有一个咨询页面,列出了数据存储中的咨询。列表循环是这样的:链接到列表中的实体

{% 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)) 

我想知道后面如何使列表中的每个协商的链接,进去查看的基本概念有关该特定咨询的信息。

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

编辑 我已经添加了一行:

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' 

还有什么我投入我的环连结href中列出咨询谁?是这样的:

href="consults/{{ url }}" 
+0

你会打电话'key.urlsafe()'每一个'咨询“,当然,不是”咨询“ - 你想为每一个链接,不是?您甚至可以在模板内调用它,具体取决于您的模板语言。 –

+0

请参阅http://stackoverflow.com/a/42423466/4495081 –

+0

我刚刚更改了咨询并得到了错误NameError:全局名称'consult'未定义。是的,我想为每一个链接。 – TimothyAURA

回答

2

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() 
+0

添加更多信息 – TimothyAURA