我想遍历我的帖子列表,以在点击时显示具有相同标签的所有帖子。我希望它们显示在 index.html 。我了解该功能,但我不知道如何将其实现到我的模板中。
我的观点.py
from django.views import generic
from .models import Post
from django.shortcuts import render
class PostList(generic.ListView):
model = Post
template_name = 'index.html'
class PostDetail(generic.DetailView):
model = Post
template_name = 'post_detail.html'
def tag(request, slug):
posts = Post.objects.filter(tags__slug=tag)
return render(request, 'index.html', {"post_list": posts, "tag": tag})
def about(request):
return render(request, 'about.html', {})
我的模板
<header class="masthead" >
<div class="overlay"></div>
<div class="container">
<div class="row">
<div class="site-heading">
<h5 class=" site-heading mt-3"> Erfolgreiche Problemlösungen in der Programmierung, Linux und Windows</h5>
<p class="texthead">
</p>
</div>
</div>
</div>
</div>
</div>
</header>
<div class="container">
<div class="row">
<!-- Blog Entries Column -->
<div class="col-md-8 mt-3 left">
{% for post in post_list %}
<div class="card mb-4" >
<div class="card-body">
<h2 class="card-title">{{ post.title }}</h2>
<p class="card-text text-muted h6">{{ post.author }} | {{ post.created_on | date:"d M Y"}} | Tag:
{% for tag in post.tags.all %}
<a class="mycardtext" href="{% url 'tag' tag.slug %}">{{ tag.name }}</a>
{% empty %}
None
{% endfor %}
</p>
<p class="card-text">{{post.content|truncatewords:25|safe}}</p>
<div><a href="{% url 'post_detail' post.slug %}"
class="btn btn-danger">Weiterlesen</a></h3>
</div>
</div>
</div>
{% endfor %}
</div>
{% block sidebar %}
{% include 'sidebar.html' %}
{% endblock sidebar %}
</div>
</div>
{%endblock%}
我的网址.py
from . import views
from django.urls import path
from django.urls import include
from django.views.generic.base import RedirectView
favicon_view = RedirectView.as_view(url='/home/UrosDobricic/mysite/static/favicon.png', permanent=True)
urlpatterns = [
path('', views.PostList.as_view(), name='home'),
path('about', views.about, name='about'),
path('<slug:slug>/', views.PostDetail.as_view(), name='post_detail'),
path("tag/<slug:slug>/", views.tag, name='tag'),
]
标签显示在博客上。我的问题是,我在views.py 中创建了这个post_list = Post.objects.filter(tags__slug=tag),但是在我的模板中我没有定义帖子。因此,当我将部分 :{% for tag in post.tags.all %} 定义为 {% for tag in post_list.tags.all %} 时,它在我的博客上显示“NONE”。我找不到正确的解决方案,所以我想问一下是否有人给我小费。通常这意味着我必须显示
{% for tags in post_list %}
{{标签}}
{% endfor %}还是我错了?如果有人可以根据我的文件举例回答,那就太好了。