我的 defaultdict(list) 不会显示在模板上,但会显示在我的视图中[重复]

2023-12-10

可能的重复:
Django 模板无法循环defaultdict

我想知道为什么我的defaultdict(list)当我在views.py中测试它时会显示,但是当我在模板上显示数据时,我什么也没得到,甚至没有错误。

有什么建议么?

这是我的views.py-confirm_list 是我的defaultdict(list)

def confirmations_report(request, *args, **kwargs):
from investments.models import Investment, InvestmentManager
from reports.forms import ConfirmationsForm
from collections import defaultdict
import ho.pisa as pisa
import cStringIO as StringIO
import os.path
confirm_list = defaultdict(list)
context = {}

if request.POST:
    form = ConfirmationsForm(request.POST)
    if form.is_valid():
        start_date = form.cleaned_data['start_date']
        end_date = form.cleaned_data['end_date']
        investments = Investment.objects.all().filter(contract_no = "",maturity_date__range=(start_date, end_date)).order_by('financial_institution')
        for i in investments:
            confirm_list[i.financial_institution.pk].append({
                'fi':i.financial_institution,
                'fi_address1': i.financial_institution.address1,
                'fi_address2': i.financial_institution.address2,
                'fi_city': i.financial_institution.city,
                'fi_prov': i.financial_institution.state_prov,
                'fi_country': i.financial_institution.country,
                'fi_postal': i.financial_institution.postal,
                'primary_owner': i.plan.get_primary_owner().member,
                'sin': i.plan.get_primary_owner().member.client.sin,
                'type': i.product.code,
                'purchase_amount': i.amount,
                'purchase_date': i.start_date,
            })
            context['investments'] = investments
        context['confirmlist'] = confirm_list
        for key, value in confirm_list.items():
            print key, value
        context['inv'] = investments
    if request.POST.has_key('print_report_submit'):
        context['show_report'] = True
        context['mb_logo'] = os.path.join(os.path.dirname(__file__), "../../../media/images/mb_logo.jpg")
        html = render_to_string('reports/admin/confirm_report_print.html', RequestContext(request,context))
        result = StringIO.StringIO()
        pdf = pisa.pisaDocument(StringIO.StringIO(html.encode("ISO-8859-1")), result)
        response = HttpResponse(result.getvalue(), mimetype='application/pdf')
        response['Content-Disposition'] = 'attachment; filename=unreceived-confirmations.pdf'
        return response

else:
    form = ConfirmationsForm()

context['form'] = form
return render_to_response('reports/admin/confirm_report.html', RequestContext(request, context))

但是当我这样做时:

for key, value in confirm_list.items():
            print key, value

在我的模板上像这样:

{% extends 'reports/admin/base.html' %}
{% load humanize %}

{% block report_html %}
<h3>Unreceived Confirmations Report</h3>
<form method="post" action="">
<table>
    <tr>
        <td>
            <strong> {{ form.start_date.label }}</strong> {{ form.start_date }}
            <strong>{{ form.end_date.label }}</strong> {{ form.end_date }}
        </td>
    </tr>
</table>
<input type="submit" value="View Report">
    <input type="submit" name="print_report_submit" value="Print Report"/>
</form>
    {% for key, value in confirmlist.items %}
        {{ key }} - {{ value }}
    {% endfor %}
{% endblock %}

我什么也没得到。

这是我在views.py中测试时得到的输出示例

33 [{'fi_address1': u'Scotiabank FAS', 'fi_country': u'Canada', 'fi_address2': u'20 Queen Street West, Suite 2600', 'fi_city': u'TORONTO', 'fi': <FinancialInstitution: NATIONAL TRUST>, 'fi_prov': u'Ontario', 'fi_postal': u'### ###', 'purchase_amount': Decimal('30000.00'), 'purchase_date': datetime.date(2011, 6, 27), 'type': u'GIC', 'sin': u'###/###/###', 'primary_owner': <Member: #, #>}]

发生这种情况是因为 Django 模板语言的方式变量查找。当您尝试循环遍历字典项目时,

{% for key, value in confirmlist.items %}

Django 首先进行字典查找confirmlist['items']。由于这是一个defaultdict,返回一个空列表。

这是一个残酷的陷阱,我也被蜇过!

要解决此问题,请在将 defaultdict 添加到模板上下文之前将其转换为字典。

context['confirmlist'] = dict(confirm_list)

或者,正如 Sebastien Trottier 在他的文章中所解释的那样回答类似的问题, set default_factory to None在添加到模板上下文之前。

confirm_list.default_factory = None
context['confirmlist'] = confirm_list
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我的 defaultdict(list) 不会显示在模板上,但会显示在我的视图中[重复] 的相关文章

  • 如何正确地将 MIDI 刻度转换为毫秒?

    我正在尝试将 MIDI 刻度 增量时间转换为毫秒 并且已经找到了一些有用的资源 MIDI Delta 时间刻度到秒 http www lastrayofhope co uk 2009 12 23 midi delta time ticks
  • python 模拟第三方模块

    我正在尝试测试一些处理推文的类 我使用 Sixohsix twitter 来处理 Twitter API 我有一个类充当 Twitter 类的外观 我的想法是模拟实际的 Sixohsix 类 通过随机生成新推文或从数据库检索它们来模拟推文的
  • 从 ffmpeg 获取实时输出以在进度条中使用(PyQt4,stdout)

    我已经查看了很多问题 但仍然无法完全弄清楚 我正在使用 PyQt 并且希望能够运行ffmpeg i file mp4 file avi并获取流式输出 以便我可以创建进度条 我看过这些问题 ffmpeg可以显示进度条吗 https stack
  • 如何使用 imaplib 获取“消息 ID”

    我尝试获取一个在操作期间不会更改的唯一 ID 我觉得UID不好 所以我认为 Message ID 是正确的 但我不知道如何获取它 我只知道 imap fetch uid XXXX 有人有解决方案吗 来自 IMAP 文档本身 IMAP4消息号
  • 将数据帧行转换为字典

    我有像下面的示例数据这样的数据帧 我正在尝试将数据帧中的一行转换为类似于下面所需输出的字典 但是当我使用 to dict 时 我得到了索引和列值 有谁知道如何将行转换为像所需输出那样的字典 任何提示都非常感激 Sample data pri
  • Django 模型在模板中不可迭代

    我试图迭代模型以获取列表中的第一个图像 但它给了我错误 即模型不可迭代 以下是我的模型和模板的代码 我只需要获取与单个产品相关的列表中的第一个图像 模型 py class Product models Model title models
  • 忽略 Mercurial hook 中的某些 Mercurial 命令

    我有一个像这样的善变钩子 hooks pretxncommit myhook python path to file myhook 代码如下所示 def myhook ui repo kwargs do some stuff 但在我的例子中
  • 以同步方式使用 FastAPI,如何获取 POST 请求的原始正文?

    在中使用 FastAPIsync not async模式 我希望能够接收 POST 请求的原始 未更改的正文 我能找到的所有例子都显示async代码 当我以正常同步方式尝试时 request body 显示为协程对象 当我通过发布一些内容来
  • 在Python中调整图像大小

    我有一张尺寸为 288 352 的图像 我想将其大小调整为 160 240 我尝试了以下代码 im imread abc png img im resize 160 240 Image ANTIALIAS 但它给出了一个错误TypeErro
  • 更改 `base_compiledir` 以将编译后的文件保存在另一个目录中

    theano base compiledir指编译后的文件存放的目录 有没有办法可以永久设置theano base compiledir到不同的位置 也许通过修改一些内部 Theano 文件的内容 http deeplearning net
  • python suds SOAP 请求中的名称空间前缀错误

    我使用 python suds 来实现客户端 并且在发送的 SOAP 标头中得到了错误的命名空间前缀 用于定义由element ref 在 wsdl 中 wsdl 正在引用数据类型 xsd 文件 请参见下文 问题出在函数上GetRecord
  • TensorFlow的./configure在哪里以及如何启用GPU支持?

    在我的 Ubuntu 上安装 TensorFlow 时 我想将 GPU 与 CUDA 结合使用 但我却停在了这一步官方教程 http www tensorflow org get started os setup md 这到底是哪里 con
  • Seaborn Pairplot 图例不显示颜色

    我一直在学习如何在Python中使用seaborn和pairplot 这里的一切似乎都工作正常 但由于某种原因 图例不会显示相关的颜色 我无法找到解决方案 因此如果有人有任何建议 请告诉我 x sns pairplot stats2 hue
  • 在 pytube3 中获取 youtube 视频的标题?

    我正在尝试构建一个应用程序来使用 python 下载 YouTube 视频pytube3 但我无法检索视频的标题 这是我的代码 from pytube import YouTube yt YouTube link print yt titl
  • 默认情况下,Keras 自定义层参数是不可训练的吗?

    我在 Keras 中构建了一个简单的自定义层 并惊讶地发现参数默认情况下未设置为可训练 我可以通过显式设置可训练属性来使其工作 我无法通过查看文档或代码来解释为什么会这样 这是应该的样子还是我做错了什么导致默认情况下参数不可训练 代码 im
  • Tkinter - 浮动窗口 - 调整大小

    灵感来自this https stackoverflow com a 22424245 13629335问题 我想为我的根窗口编写自己的调整大小函数 但我刚刚注意到我的代码显示了一些性能问题 如果你快速调整它的大小 你会发现窗口没有像我希望
  • Ubuntu 上的 Python 2.7

    我是 Python 新手 正在 Linux 机器 Ubuntu 10 10 上工作 它正在运行 python 2 6 但我想运行 2 7 因为它有我想使用的功能 有人敦促我不要安装 2 7 并将其设置为我的默认 python 我的问题是 如
  • Python 无法使用套接字绑定我的外部/公共 IP 地址,给出错误但是当使用本地 IP 地址时,错误不会显示

    这是出现主要错误的代码 与我的本地 IP 的绑定将起作用 s bind 192 168 1 4 port 与我的公共 IP 的绑定失败并出现以下错误 s bind 99 99 99 99 port WinError 10049 请求的地址在
  • 从 Twitter API 2.0 获取 user.fields 时出现问题

    我想从 Twitter API 2 0 端点加载推文 并尝试获取标准字段 作者 文本 和一些扩展字段 尤其是 用户 字段 端点和参数的定义工作没有错误 在生成的 json 中 我只找到标准字段 但没有找到所需的 user fields 用户
  • 列表值的意外更改

    这是我的课 class variable object def init self name name alias parents values table name of the variable self name 这是有问题的函数 f

随机推荐

  • 重新分配选票,同时淘汰候选人

    考虑一下这个想法 我有一个排名选择投票系统 不符合门槛的候选人将在不同轮次中被淘汰 在此示例中 我们有 6 名候选人在初选中竞选两个席位 此时 我们已进入第四轮 没有获胜者 其中候选人 3 和 5 已被淘汰 在这一轮中 候选人4将被淘汰 他
  • 克隆芹菜链

    我有一个有趣的问题 试图克隆芹菜链以在组中使用 我的预期用例是这样的group chain clone args args for args in it 然而它一直抱怨没有足够的论据 我已经使用下面的内容对此进行了分解 在一个名为tasks
  • 春季启动 JSP 404

    我正在尝试在我的 Spring Boot 服务中添加一个 jsp 页面 我的问题是 每次我尝试进入该页面时 我都会遇到以下问题 白标错误页面 此应用程序没有 error 的显式映射 因此您会看到 这是后备措施 2015 年 EEST 4 月
  • 如何为 MVC 创建自定义验证属性

    我想为 MVC2 的电子邮件地址创建一个自定义验证属性 该属性不是从 RegularExpressionAttribute 继承 但可以在客户端验证中使用 有人能指出我正确的方向吗 我尝试了这样简单的事情 AttributeUsage At
  • 如果 HTML 文件已更新,则执行 JavaScript [关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我正在尝试在 JavaScript jQuery 甚至 PHP 中找到一个插件或函数 如
  • 从 URL 中删除应用程序名称

    我的网站使用 JSF 并且 url 似乎是 http mysitename com wompower6 faces home xhtml 我正在使用 Prettyfaces 因此如果我在 Pretty config xml 中使用以下内容
  • 如何在 PostgreSQL 中搜索一定范围的整数?

    我有一个整数列 我需要搜索该列以 19 开头的行 在 MySQL 中我会使用 SELECT WHEREid喜欢 19 ERROR operator does not exist integer unknown LINE 1 select f
  • 如何从 NSDictionary 获取键/值对?

    我在 NSDictionary 方面需要很少的帮助 如果我有字典 我怎样才能得到一对 让我们说一个 id 的值 NSDictionary allCourses NSJSONSerialization JSONObjectWithData a
  • Django 管理员。显示分层下拉过滤器

    我有以下模型 from django db import models class State models Model name models CharField max length 30 abbreviation models Cha
  • Azure-Functions:您可以使用 web.config 限制(例如 IP 限制或基本身份验证)

    Azure 网站可能存在 IP 限制 as 正在使用基本身份验证保护站点 这些技术或任何其他 web config 技术是否可以在 Azure Functions 上使用 或者是否需要进行编码 我在 Azure Function 的 www
  • AchartEngine 中的圆环图半径

    我正在尝试在 aChartengine 中设置圆环图内圆半径和外圆半径 下面是我的代码 public class MainActivity extends Activity GraphicalView gv RelativeLayout r
  • 如何在 Bottle 中将 wsgi.url_scheme 设置为 https?

    我想将所有请求重定向到http to https 是否有通用的设置方法wsgi url scheme to https在 Python 2 7 Bottle 应用程序中 应用程序的一般结构是 setup py contains instal
  • Maven 中的传递 AAR 依赖项

    我正在从使用 android maven plugin 的 Maven 项目构建 Android 应用程序 在这个项目中 我使用新的测试版数据绑定库 它包含在 Android SDK 的本地 m2repository extras andr
  • 使用 CSS GRID 为什么我会出现这种差距?

    我正在学习 CSS GRID 但我不知道为什么在下面的示例中出现空白 第二个项目可以适合第一个轨道 但我却在那里出现了间隙 这是代码 container display grid margin 40px grid gap 20px text
  • 当命名类型 T 的任何方法具有指针接收器时,复制类型 T 的实例

    I read Go 编程语言书籍最近学习golang编程语言的好资源 6 2节中有一段关于类型的复制实例T当它是指针接收器或不在方法中时 我无法理解它 有没有用一个有意义的例子来解释这一段 6 2 使用指针接收器的方法 如果命名类型 T 的
  • 使用Scrapy爬取多个域,无需纵横交错

    我已经设置了一个 CrawlSpider 聚合所有出站链接 从start urls仅通过例如一定深度DEPTH LIMIT 2 class LinkNetworkSpider CrawlSpider name network allowed
  • 尽管安装了 PIP,Python Pillow(或 PIL)仍无法工作

    我正在关注文档 https pillow readthedocs io en stable 我用 pip 成功安装了 Pillow 但是 当我尝试导入Image我可以的功能 a 仅从 PIL 导入 b 只得到没有模块的错误PILc 出现没有
  • AJAX post数据到达ASP.NET Core 2.1控制器时为空

    我使用以下 jQuery 代码将数据发布到 ASP NET Core MVC 2 1 2 页面 function OnCountryChange ajax url OnCountryChange type POST contentType
  • 如何使用正则表达式用括号将文本括起来?

    我一直试图用括号将通过正则表达式找到的一些文本括起来 例如替换全部is with is Input is This is a long sentence that IS written Desired output This is a lo
  • 我的 defaultdict(list) 不会显示在模板上,但会显示在我的视图中[重复]

    这个问题在这里已经有答案了 可能的重复 Django 模板无法循环defaultdict 我想知道为什么我的defaultdict list 当我在views py中测试它时会显示 但是当我在模板上显示数据时 我什么也没得到 甚至没有错误