Django - 在 DetailView 中不可见的对象列表
Django - list of objects not visible in DetailView
我的主页上有 post 列表,它们是 post DetailView 的链接。
链接工作正常,但是当我转到 DetailView 时,列表不再可见 - 我必须返回主页才能选择其他 post。显示 posts 列表的元素位于 base.html,正确地将对象列表传递给 home.html,而在 post_detail.html 列表中是空的。
Homepage looks like this
Post DetailView looks like this - posts list is no more visible
Inspect view on homepage
Inepect view on DetailView - ul element is empty
base.html
<body>
<div>
<ul>
<li>
<a href="{% url 'blog-home' %}"> home</a>
</li>
<li>
<a> items</a>
<ul>
{% for post in posts %}
<li>
<a href="{% url 'post-detail' post.id %}"> {{ post.title }}</a>
</li>
{% endfor %}
</ul>
</li>
</ul>
</div>
<di>
{% block content %}
{% endblock content %}
</div>
</body>
home.html
{% extends "blog/base.html" %}
{% block content %}
{% for post in posts %}
<div>
<a href="#">{{post.title}}</a>
<p>{{post.content}}</p>
<p>{{post.date_posted}}</p>
</div>
{% endfor %}
{% endblock content %}
post_detail.html
{% extends "blog/base.html" %}
{% block content %}
<div>
<a href="#">{{object.title}}</a>
<p>{{object.content}}</p>
</div>
{% endblock content %}
urls.py
from django.urls import path
from .views import PostListView, PostDetailView
from . import views
urlpatterns = [
path('', PostListView.as_view(), name='blog-home'),
path('post/<int:pk>/', PostDetailView.as_view(), name='post-detail'),
]
views.py
from django.shortcuts import render
from django.views.generic import ListView, DetailView
from .models import Post
class PostListView(ListView):
model = Post
template_name = 'blog/home.html'
context_object_name = 'posts'
class PostDetailView(DetailView):
model = Post
models.py
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=100)
content = models.TextField()
def __str__(self):
return self.title
您必须覆盖仅显示当前实例数据的 DetailView 上下文。
class PostDetailView(DetailView):
model = Post
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['other_posts'] = Post.objects.all()
return context
我的主页上有 post 列表,它们是 post DetailView 的链接。 链接工作正常,但是当我转到 DetailView 时,列表不再可见 - 我必须返回主页才能选择其他 post。显示 posts 列表的元素位于 base.html,正确地将对象列表传递给 home.html,而在 post_detail.html 列表中是空的。
Homepage looks like this
Post DetailView looks like this - posts list is no more visible
Inspect view on homepage
Inepect view on DetailView - ul element is empty
base.html
<body>
<div>
<ul>
<li>
<a href="{% url 'blog-home' %}"> home</a>
</li>
<li>
<a> items</a>
<ul>
{% for post in posts %}
<li>
<a href="{% url 'post-detail' post.id %}"> {{ post.title }}</a>
</li>
{% endfor %}
</ul>
</li>
</ul>
</div>
<di>
{% block content %}
{% endblock content %}
</div>
</body>
home.html
{% extends "blog/base.html" %}
{% block content %}
{% for post in posts %}
<div>
<a href="#">{{post.title}}</a>
<p>{{post.content}}</p>
<p>{{post.date_posted}}</p>
</div>
{% endfor %}
{% endblock content %}
post_detail.html
{% extends "blog/base.html" %}
{% block content %}
<div>
<a href="#">{{object.title}}</a>
<p>{{object.content}}</p>
</div>
{% endblock content %}
urls.py
from django.urls import path
from .views import PostListView, PostDetailView
from . import views
urlpatterns = [
path('', PostListView.as_view(), name='blog-home'),
path('post/<int:pk>/', PostDetailView.as_view(), name='post-detail'),
]
views.py
from django.shortcuts import render
from django.views.generic import ListView, DetailView
from .models import Post
class PostListView(ListView):
model = Post
template_name = 'blog/home.html'
context_object_name = 'posts'
class PostDetailView(DetailView):
model = Post
models.py
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=100)
content = models.TextField()
def __str__(self):
return self.title
您必须覆盖仅显示当前实例数据的 DetailView 上下文。
class PostDetailView(DetailView):
model = Post
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['other_posts'] = Post.objects.all()
return context