首页 > 解决方案 > 在屏幕上发布数据

问题描述

我正在学习 Django,并在此视频中进行了练习,我在 45 分钟左右起床,一切正常:https ://www.youtube.com/watch?v=D6esTdOLXh4之后我无法获得这两个博客文章以在视频中显示。

我将新模型命名为“posts”,这与视频中将模型称为“Posts”不同,所以我调整了我的代码,而不是创建变量“posts”,而是在 view.py 中创建了 blogpost。下面我展示了模型、视图和索引的代码。问题是我可以看到布局,但它没有填充 jinja 代码中的博客文章。如果我添加静态文本,静态文本显示正常。

模型.py

   /*from django.db import models
   from datetime import datetime

   # Create your models here.

class posts(models.Model):
    title = models.CharField(max_length=200)
    body = models.TextField()
    created_at = models.DateTimeField(default=datetime.now, blank=True)
    def __str__(self):
        return self.title
    class Meta:
        verbose_name_plural = "Posts"*/

视图.py

def index(request):
#    return HttpResponse('Hello from Posts')

    blogpost = posts.objects.all()[:10]

    context = {
        'title': 'latest posts',
        'posts': blogpost
    }

    return render(request, 'posts/index.html', context)

索引.html

{% extends 'posts/layout.html' %}

{% block content %}
<h1 class="center-align red lighten-3">{{title}}</h1>
<ul class="collection">
    {% for blog in blogpost %}
        <li class="collection-item">{{blog.title}}</li>
    {% endfor %}
</ul>
{% endblock %}

因此,就像在视频中一样,它应该会在主屏幕上显示我的博客文章 1 和 2,但事实并非如此。

标签: pythondjango

解决方案


在视图中查看,您将posts作为参数发送到模板。

context = {
        'title': 'latest posts',
        'posts': blogpost
    }

在模板上,您必须更改forfor:

{% for blog in posts %}
    <li class="collection-item">{{blog.title}}</li>
{% endfor %}

推荐阅读