【问题标题】:Object created in view isn't rendering in template在视图中创建的对象未在模板中呈现
【发布时间】:2022-11-29 12:22:58
【问题描述】:

我正在通过外部函数在视图中创建一个新对象。这是代码:

def index(request):
    sousei = suii_scratch(SOUSEI_URL)
    s_jikan = sousei[0]
    s_suii = sousei[1]
    sousei_obj = Sousei.objects.create(jikan=s_jikan, suii=s_suii)
    #print(sousei_obj)
    context = {
        sousei_obj : 'sousei',
    }
    return render(request, 'index.html', context)

外部函数返回两个值,它们被捕获在s_jikans_suii 变量中。这些变量然后用于创建一个新对象(模型只有这两个字段)。

如果我取消注释 print 语句,我将使用从外部函数新获得的数据打印模型的 __str__ 方法。此外,如果我检查管理员,数据库中的新记录将被正确保存。直到这里似乎一切正常,但是当将创建的对象传递给模板时,我无法渲染它。这是模板代码:

{% if sousei %}

<p>{{sousei.jikan}}</p>
<p>{{sousei.suii}}</p>

{% else %}

<p>No data.</p>

{% endif %}

但是我一直没有数据。我错过了什么?

【问题讨论】:

    标签: django django-models django-templates django-orm


    【解决方案1】:

    在字典中,键位于值之前,您使用创建的对象作为键,使用字符串作为上下文中的值

    def index(request):
        ...
        context = {
            'sousei': sousei_obj
        }
        return render(request, 'index.html', context)
    

    【讨论】:

      猜你喜欢
      • 2020-07-15
      • 1970-01-01
      • 2015-07-23
      • 1970-01-01
      • 2014-11-26
      • 2021-02-14
      • 2019-10-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多