【问题标题】:Django does not display model dataDjango 不显示模型数据
【发布时间】:2018-08-29 19:57:51
【问题描述】:

我有几个上传的文件,我想在模板中显示它们的名称。这在技术上不应该是一个问题,应该与

{% for obj in objs %}
<li>{{obj.field}}</li>

但奇怪的是,它没有显示任何内容。我的文件已上传并出现在我的数据库中,但没有显示。我一直在寻找解决方案,但大多数类似的问题主要与语法有关。

我的文档类:

class Document(models.Model):
description = models.CharField(max_length=255, blank=True)
document = models.FileField(upload_to='documents/')
uploaded_at = models.DateTimeField(auto_now_add=True)

def __str__(self):
    return str(self.document)

这就是我展示它们的方式:

<div class="card-body text-light">
            {% for file in doc %}
            <b>{{file.description}}</b>
            {%endfor%}
        </div>

我查看了文档和更多教程,理论上它应该能够显示文件。

编辑:

def user_panel(request):

if request.user.is_authenticated:
    return render(request, 'main/user_panel.html')
else:
    return render(request, 'main/login.html')

【问题讨论】:

  • 你能展示你的视图吗,它为模板准备数据。
  • 您是指上传文件的视图或呈现页面的视图,在该页面中我显示所有类型的数据,包括这个特定的数据?
  • 呈现页面的视图
  • 我发布了视图

标签: python django upload models


【解决方案1】:

你的观点不正确。 objs 查询集应在 render 函数的上下文中定义。例如:

def user_panel(request):
    if request.user.is_authenticated:
        context = {'objs': Document.objects.all()}
        return render(request, 'main/user_panel.html', context)
    else:
        return render(request, 'main/login.html')

这里有更多关于render功能:https://docs.djangoproject.com/en/2.0/topics/http/shortcuts/#render

【讨论】:

  • 我明白了,但不幸的是我仍然没有任何东西可显示。
  • @CatalinC 你能在gist.github.com 上发布你的settings.py(没有秘密信息),模型、视图、路线和模板的完整定义吗?我会尝试重现您的问题。
  • 我会尝试上传它们
  • @CatalinC 快速浏览一下。在user_panel 视图中,您的上下文具有变量objs,但在模板中,您引用的是docs。尝试解决这个问题,有帮助吗?
  • Ehm,我想这是一个误会。我在那里使用的是关于如何完成模型数据显示并且通常应该工作的一般想法,但我没有。就我而言,我使用文档,从技术上讲应该可以工作,但不知何故,这就是我发布此主题的最初原因
猜你喜欢
  • 2013-02-17
  • 1970-01-01
  • 2016-10-15
  • 1970-01-01
  • 2011-11-25
  • 2017-09-24
  • 1970-01-01
  • 2017-02-15
相关资源
最近更新 更多