【发布时间】:2021-12-14 06:04:49
【问题描述】:
我正在尝试通过按标签过滤文章来呈现页面。我希望在用户单击 All-articles.html 中的标签时显示相关文章
我不知道该怎么做,也不知道如何编写代码。
我应该在urls.py 中创建一个路径吗?
path('tag/<str:tagslug>', views.tag, name='tag'),
这样我就可以访问views.py中的网址?
如何编写 ORM 以通过 views.py 中的标签过滤文章?
任何帮助将不胜感激:) 谢谢
models.py
class ArticleTags(models.Model):
article = models.ForeignKey('Articles', models.DO_NOTHING)
tag = models.ForeignKey('Tags', models.DO_NOTHING)
class Tags(models.Model):
tag = models.CharField(unique=True, max_length=75)
tagslug = models.SlugField(max_length=200, unique=True, default=None)
class Articles(models.Model):
title = models.CharField(max_length=155)
metatitle = models.CharField(max_length=155)
slug = models.SlugField(unique=True, max_length=155)
summary = models.TextField(blank=True, null=True)
field_created = models.DateTimeField(db_column='_created', blank=True, null=True)
cover = models.ImageField(upload_to="cover", blank=True, default='logo-00-06.png')
views.py
def allarticles(request):
articles_list = Articles.objects.all()
paginator = Paginator(articles_list, 12)
page_number = request.GET.get('page')
page_obj = paginator.get_page(page_number)
context = {'page_obj': page_obj}
return render(request, "All-articles.html", context)
All-articles.html
{% for article in page_obj %}
<article>
<div>
<img
src="media/{{ article.cover }}"
alt="menu item"
class="article-photo"
/>
</div>
<header>
<h4>{{ article.title }}</h4>
</header>
</article>
{% endfor %}
【问题讨论】:
标签: django django-models django-views django-templates django-orm