【问题标题】:can't display data from database on template无法在模板上显示数据库中的数据
【发布时间】:2019-04-26 11:31:14
【问题描述】:

我是 django 的初学者,我的问题是: 我的数据库中已有数据,但无法在模板上显示。

我多次尝试更改视图的功能和模板语言,但对我没有任何效果

在views.py中

def my_financial_data(request):
    mydata = DataItem.objects.all()
    print(mydata)
    return render(request, 'home.html', {'mydata': mydata})

在models.py中

class DataItem(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=100, default='')
    lastprice = models.CharField(max_length=100, default='')
    sinceclose = models.CharField(max_length=100, default='')
    sinceopen = models.CharField(max_length=100, default='')
    isin = models.CharField(max_length=100, default='')
    place = models.CharField(max_length=100, default='')

在我的模板中

<div>
        <table class="table">
          <thead class="bg-dark">
            <tr>
              <th class="text-light">Name</th>
              <th class="text-light">Last Price</th>
              <th class="text-light">Change since Close</th>
              <th class="text-light">Change since Open</th>
              <th class="text-light">Isin</th>
            </tr>
          </thead>

            <tbody>

            {% for item in mydata %}
                <tr>
                    <td class="text-primary"> {{item.name}} </td>
                    <td class="text-dark"> {{ item.lastprice }} </td>
                    <td class="text-dark"> {{ item.sinceclose }} </td>
                    <td class="text-dark"> {{ item.sinceopen }} </td>
                    <td class="text-dark"> {{ item.isin }} </td>
                </tr>
            {% endfor %}

            </tbody>

        </table>
    </div>

在我的 urls.py 中

urlpatterns = [
    path('', lambda request: redirect('accounts/login/', permanent=False)),
    path('admin/', admin.site.urls),
    path('accounts/', include('django.contrib.auth.urls')),
    #path('blog/', financial_data_render),
    path('blog/', TemplateView.as_view(template_name='home.html'), name='home'), # If the login is right, it's redirecting to home.html
    path('blog', views.DataItem),
    path('blog/add-isin/', views.add_row),
    path('blog/add-place/', views.add_row),
]

if settings.DEBUG:
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) # for the static files

我想要的是,当我打开我的网站时,会显示保存的数据。

非常感谢您的帮助^^

【问题讨论】:

  • 您好! print 语句的输出是什么?
  • 打开网站时会发生什么?模板是否被渲染?
  • 您好,Al Amin,我看不到我的打印件。我可能很愚蠢,但我不知道在哪里可以查看此打印件
  • 你好 Higor,当我打开我的网站时,什么都没有呈现...
  • 你的网址是什么样子的?

标签: python sql django


【解决方案1】:

网址不一样。但是你的博客/和博客。

path('blog/', TemplateView.as_view(template_name='home.html'), name='home'), # If the login is right, it's redirecting to home.html
path('blog', views.DataItem),

【讨论】:

  • 你的意思是我必须创建另一个视图来显示我的数据对吗?
  • 您为一个路径定义了两个视图。这是不对的。因为它找不到要去哪个视图。 EX:你必须path('blog/', TemplateView.as_view(template_name='home.html'), name='home'), path('blog/data', views.DataItem),
  • 好的,我更正了 blog/ 的错误,并且按照您的要求执行了操作,但它不起作用,或者我需要更多详细信息。原谅我看不懂
  • 在 CBV 中,模板的默认名称是 data_list。尝试将模板中的 MYDATA 更​​改为 data_list。
【解决方案2】:

您没有 DataItem 视图,这就是问题所在。我想你是打算这样做的:

path('blog', views.my_financial_data),

【讨论】:

  • 您好,我用它代替了views.DataItem,但它不起作用......当我加载我的页面时,数据仍然不存在
  • 那么,您能解释一下为什么您有 2 个“博客”网址吗?我读了评论,但没有意义。这有点令人困惑。尝试删除您的第一个“博客/”网址。我认为 Django 在去另一个之前先去那里
  • 是的,这是因为我希望将我的数据加载到博客/我删除了第一个博客/(模板为 ...)并且我有一个错误“找不到‘家’的反向。‘家’ ' 不是有效的视图函数或模式名称。"
  • 如果您希望将数据加载到“blog/”,您应该拥有:path('blog/', views.my_financial_data), 并删除另一个“blog”
  • 是的,我已经这样做了,但如果我删除第一个博客,它仍然是同样的错误/
【解决方案3】:

通过像这样设置 urls.py 和 views.py

# urls.py

urlpatterns = [
...
path('blog/', my_financial_data),
...

]

# views.py

def my_financial_data(request):
    mydata = DataItem.objects.all()
    print("My financial data : ",  mydata)
    return render(request, 'home.html', {'mydata': mydata})

在控制台中检查 mydata 是否有任何值

【讨论】:

  • 我的控制台中没有任何内容,或者我在错误的地方 MacBook-Pro-:mysite$ python3 manage.py runserver ['manage.py', 'runserver'] ['manage. py', 'runserver'] 正在执行系统检查...系统检查未发现任何问题(0 静音)。 2019 年 4 月 26 日 - 12:40:42 Django 版本 2.1.5,使用设置 'mysite.settings' 在 127.0.0.1:8000 启动开发服务器 使用 CONTROL-C 退出服务器。 [2019 年 4 月 26 日 12:40:49]“GET /blog/HTTP/1.1”200 4291 [2019 年 4 月 26 日 12:42:44]“GET /blog/HTTP/1.1”200 4291
【解决方案4】:

好的,我找到了,谢谢你们

这是 url blog/ 就像你告诉我的那样,我的 html 中有 {% url '' %} 的错误,所以我必须清除所有这些,再次非常感谢你,我不会犯同样的错误!

【讨论】:

    猜你喜欢
    • 2023-04-08
    • 2019-06-05
    • 2021-04-21
    • 2021-03-16
    • 1970-01-01
    • 2017-04-18
    • 1970-01-01
    • 2017-07-22
    相关资源
    最近更新 更多