Django模板视图类不起作用
Posted
技术标签:
【中文标题】Django模板视图类不起作用【英文标题】:Django Template view class not working 【发布时间】:2015-03-24 14:51:11 【问题描述】:我是 django 新手,想使用基于分类的视图将一些数据传递给我的模板。为此,我使用了模板视图。但无法获得成功。
可见
class MessagesSummaryView(generic.TemplateView):
template_name = 'message_history.html'
log_dict =
def get_context_data(self, **kwargs):
context = super(MessagesSummaryView, self).get_context_data(**kwargs)
cur = connection.cursor()
cur.execute("SELECT logmsg.message_id, COUNT(logmsg.log_id) AS TotalUsers, logmsg.sent_on AS Sent_ON, logmsg.log_status, msg.message_subject FROM sendmessage_log_messages logmsg, sendmessage_messages msg WHERE from_name = '"+ str(request.user.email) +"' and logmsg.message_id = msg.message_id GROUP BY logmsg.message_id, logmsg.sent_on, logmsg.log_status, msg.message_subject;")
rows = cur.fetchall()
count = 0
for row in rows:
temp=
temp['message_id'] = row[0]
temp['count'] = row[1]
temp['Sent_ON'] = str(row[2])
temp['message_subject'] = row[3]
log_dict[row[0]] = temp
context['message_history'] = self.log_dict
return context
在模板中
<table id="mytable" class="table table-bordred table-style-two" style="table-layout:auto; border:black solid thin;">
<tbody>
<div id="content">
% for contact in message_history %
<tr>
<!-- <td style="text-align:center;"> contact.list_id </td> -->
<td style="text-align:left; font-size:small; width:10%;">You Had Send Message : contact.message_subject to contact.TotalUsers on contact.sent_on . <a href="/message/?message_id= contact.message_id">Show Detials</a></td>
</tr>
% endfor %
</div>
</tbody>
</table>
已经解决了很多错误,但是页面上没有显示数据,其中一个是
global name 'request' is not defined
【问题讨论】:
【参考方案1】:问题出在这条线上
cur.execute("SELECT logmsg.message_id, COUNT(logmsg.log_id) AS TotalUsers, logmsg.sent_on AS Sent_ON, logmsg.log_status, msg.message_subject FROM sendmessage_log_messages logmsg, sendmessage_messages msg WHERE from_name = '"+ str(request.user.email) +"' and logmsg.message_id = msg.message_id GROUP BY logmsg.message_id, logmsg.sent_on, logmsg.log_status, msg.message_subject;")
您尝试在哪里使用request.user.email
。
尝试改用self.request.user.email
。
【讨论】:
它可以工作,但是模板页面上仍然没有显示数据。 尝试在模板中的某处(表格元素之前)添加 message_history
,以确保您的表格实际上包含某些内容(如果您看到[]
,那么您的表格是空的,您可能需要优化您的表格查询)
是的,数据以嵌套字典的形式传入...40: 'count': 2L, 'message_subject': u'Delivered', 'message_id': 40, 'Sent_ON': '2015-01-22 12:37:58.631670+00:00', 41: 'count': 14L, 'message_subject': u'Delivered', 'message_id': 41, 'Sent_ON': '2015-01-22 12:37:58.631670+00:00'
我正在像这样访问它 % for keys in message_history %
message_history[keys]['count']
和它的系统,无法解析剩余部分:'[keys]['message_subject']' from 'message_history[keys]['message_subject' ]'
[]
符号在模板中不起作用!您只能使用.
访问字典值。我建议这样做:% for key, val in message_history.items % key is key value is val % endfor %
然后您可以使用点 (.
) 访问 val
的属性以上是关于Django模板视图类不起作用的主要内容,如果未能解决你的问题,请参考以下文章
Pandas 在 django 视图中读取 CSV 不起作用
python-django模板继承在引用基中的多个块时不起作用