Python Appengine - 将两个实体传递给 jinja 模板视图
Python Appengine - Pass two entities to jinja template view
我有一个 View-Consult 页面,请求处理程序是:
class ViewConsultPage(webapp2.RequestHandler):
def get(self):
consult = ndb.Key(urlsafe=self.request.get('key')).get()
template = JINJA_ENVIRONMENT.get_template('/templates/view-consult.html')
template_values = {
'consult': consult
}
self.response.out.write(template.render(template_values))
它显示有关咨询的信息。然后使用与咨询相同的 ID 创建评估。然后我想在同一页面上显示有关咨询和评估的信息。
我假设我将评估添加到与咨询类似的处理程序中:
class ViewConsultPage(webapp2.RequestHandler):
def get(self):
consult = ndb.Key(urlsafe=self.request.get('key')).get()
assessment = ndb.Key(urlsafe=self.request.get('key')).get()
template = JINJA_ENVIRONMENT.get_template('/templates/view-consult.html')
template_values = {
'consult': consult,
'assessment': assessment
}
self.response.out.write(template.render(template_values))
当我加载视图咨询页面时,咨询属性像以前一样呈现,但评估属性,例如 {{ assessment.assess_notes }} 打印为空字符串(或什么都没有)。
consult
和assessment
共享相同的密钥ID,但不是相同的密钥和urlsafe字符串,因此您不能使用相同的方法获取实体。
您可以通过密钥 ID 获取 assessment
实体 - 两个实体都相同。所以我会像这样重写 get()
的第一两行:
consult_key = ndb.Key(urlsafe=self.request.get('key'))
consult = consult_key.get()
# assessment and consult have the same key ID
assessment = Assesment.get_by_id(consult_key.id())
我有一个 View-Consult 页面,请求处理程序是:
class ViewConsultPage(webapp2.RequestHandler):
def get(self):
consult = ndb.Key(urlsafe=self.request.get('key')).get()
template = JINJA_ENVIRONMENT.get_template('/templates/view-consult.html')
template_values = {
'consult': consult
}
self.response.out.write(template.render(template_values))
它显示有关咨询的信息。然后使用与咨询相同的 ID 创建评估。然后我想在同一页面上显示有关咨询和评估的信息。
我假设我将评估添加到与咨询类似的处理程序中:
class ViewConsultPage(webapp2.RequestHandler):
def get(self):
consult = ndb.Key(urlsafe=self.request.get('key')).get()
assessment = ndb.Key(urlsafe=self.request.get('key')).get()
template = JINJA_ENVIRONMENT.get_template('/templates/view-consult.html')
template_values = {
'consult': consult,
'assessment': assessment
}
self.response.out.write(template.render(template_values))
当我加载视图咨询页面时,咨询属性像以前一样呈现,但评估属性,例如 {{ assessment.assess_notes }} 打印为空字符串(或什么都没有)。
consult
和assessment
共享相同的密钥ID,但不是相同的密钥和urlsafe字符串,因此您不能使用相同的方法获取实体。
您可以通过密钥 ID 获取 assessment
实体 - 两个实体都相同。所以我会像这样重写 get()
的第一两行:
consult_key = ndb.Key(urlsafe=self.request.get('key'))
consult = consult_key.get()
# assessment and consult have the same key ID
assessment = Assesment.get_by_id(consult_key.id())