DjangoCategory列表页面
前面讲述过在列表页面展示category,这一节主要讲解如何点击category跳转到相应的category下的文章列表
主要过程分为:
添加category过滤的view
修改url
在页面Template中添加url
修改 views.py
def category(request, category_id):
articles = Article.objects.filter(categories__id=category_id).filter(deletedAt=None).filter(status=2).order_by(
'-updatedAt')
categories = Category.objects.filter(deletedAt=None)
tags = Tag.objects.all()
context = {
'articles': articles,
'categories': categories,
'tags': tags,
}
return render(request, 'blog/blog_image_rs.html', context)
修改urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
path('<int:article_id>/', views.blog_single, name='detail'),
path('<slug:slug>/', views.blog_slug_single, name='detail_slug'),
path('category/<int:category_id>/', views.category, name='category'),
]
修改blog_image_rs.html文件
<aside class="widget widget_categories">
<h4 class="widget-title">Search Categories</h4>
<ul>
{% for category in categories %}
<li><a href="/blog/category/{{category.id}}"><i class="fa fa-chevron-right"></i>{{category.title}}</a></li>
{% endfor %}
</ul>
</aside>
最后修改完成页面之后,发现category列表下面的blog点击之后不能访问,其访问的url是http://127.0.0.1:8000/blog/category/1/4。 这里明显无法解析,我们需要修改article的地址为绝对地址,修改如下
<div class="ed_blog_item ed_bottompadder50">
{% if article.header_image%}
<div class="ed_blog_image">
<a href="/blog/{{article.id}}"><img src="{{article.header_image.url}}"
alt="blog image"/></a>
</div>
{% endif %}
<div class="ed_blog_info">
<h2><a href="/blog/{{article.id}}">{{article.title}}</a></h2>
<ul>
<li><a href="#"><i class="fa fa-user"></i> james marco</a></li>
<li><a href="#"><i class="fa fa-clock-o"></i> {{article.updatedAt}}</a></li>
<li><a href="#"><i class="fa fa-comment-o"></i> 4 comments</a></li>
</ul>
<p class="ed_bottompadder10">{{article.description|default:''}}</p>
<a href="/blog/{{article.id}}" class="btn ed_btn ed_orange">read more</a>
</div>
</div>
Last updated
Was this helpful?