0

我创建了模型帖子,我想使用基于类的视图在网页上显示所有帖子,但它不起作用。URL 正在打开,但网页没有显示任何内容(homepage.html 和 _post.html 上的内容,但导航栏来自 _inject.html)。问题在于模板中的编码。

后模型-

class Post(models.Model):
    auther = models.ForeignKey(User, related_name="posts",on_delete=models.CASCADE)
    created_at = models.DateTimeField(auto_now=True)
    heading = models.CharField(max_length=400)
    message = models.TextField()
    message_html = models.TextField(editable=False)

    def __str__(self):
        return self.message

    def save(self,*args,**kwargs):
        self.message_html = misaka.html(self.message)
        super().save(*args,**kwargs)

    def get_absolute_url(self):
        return reverse('posts:single',kwargs={'username':self.user.username,'pk':self.pk})

    class Meta:
        ordering = ['-created_at']
        unique_together = ['auther','message']

发布视图-

class ListPosts(generic.ListView):
    model = models.Post
    template_name = "homepage.html"

主页.html

{% extends "_inject.html" %}
{% block content %}
  <div class="col-md-8">
    {% if post.count == 0 %}
    <h2>No posts in this group yet!</h2>
    {% else %}
<ul>
        {% for p in Post.all %}
    <h1>p.message</h1>
    <li>        {% include "_post.html" %}  </li>
        {% endfor %}
</ul>
    {% endif %}
  </div>
{% endblock %}

_post.html-

<div class="media">
    <h3 class="mr-5"><a href="{% url 'posts:for_user' username=post.user.username %}">@{{ post.user.username }}</a></h3>

    <div class="media-body">
        <strong>{{ p.user.username }}</strong>
        <h5>{{ p.message_html|safe }}</h5>
            <time class="time"><a href="{% url 'posts:single' username=post.user.username pk=post.pk %}">{{ p.created_at }}</a></time>
        
        

        <div class="media-footer">
            {% if user.is_authenticated and post.user == user and not hide_delete %}
                <a href="{% url 'posts:delete' pk=post.pk %}" title="delete" class="btn btn-simple">
                    <span class="fa fa-remove text-danger" aria-hidden="true"></span>
                    <span class="text-danger icon-label">Delete</span>
                </a>
            {% endif %}
        </div>
    </div>
</div>
4

1 回答 1

0

尝试将您的更改homepage.html为以下内容:

{% extends "_inject.html" %}
{% block content %}
  <div class="col-md-8">
  {% if post_list %}
    {% for post in post_list %}
  <h1>{{post.message}}</h1>
   <li>{% include "_post.html" %}  </li>
   {% endfor %}
   {% else %}
    <h2>No posts in this group yet!</h2>
  {% endif %}
  </div>
{% endblock %}
于 2020-07-04T04:00:15.353 回答