【问题标题】:Django Template view class not workingDjango模板视图类不起作用
【发布时间】: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

【问题讨论】:

    标签: python django django-templates django-class-based-views


    【解决方案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 的属性
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-10
    • 2017-06-02
    • 2012-01-31
    • 2013-04-06
    • 2023-03-08
    • 2015-03-29
    相关资源
    最近更新 更多