如何为博客过滤 Django 中的特定类别?
How to filter a particular category in Django for the blog?
如何在 Django 中为博客过滤特定类别?
我写了下面的代码,大家可以主要关注views.py
urls.py-
urlpatterns = [
path('', views.homepage, name="home"),
url(r'^News/', views.News, name="News"),
url(r'^Android/', views.android, name="android"),
url(r'^PC/', views.PC, name="PC"),
url(r'^MachineLearning/', views.MachineLearning, name="Offers"),
url(r'^Offers/', views.Offers, name="Offers"),
url(r'^Gaming/', views.Gaming, name="Gaming"),
url(r'^Others/', views.Others, name="Others"),
path('create/', views.article_create, name="create"),
url(r'^(?P<slug>[\w-]+)/$', views.article_detail, name="detail"),
url(r'^(?P<slug>[\w-]+)/edit/', views.article_update, name="post_edit"),
url(r'^(?P<slug>[\w-]+)/edit/post_edit', views.article_update, name="post_edit"),
url(r'^(?P<slug>[\w-]+)/delete/', views.article_delete, name="delete_post"),
]
models.py-
class Home(models.Model):
title = models.CharField(max_length=100)
tag1 = models.CharField(max_length=100, default='Tech')
tag2 = models.CharField(max_length=100, default='Android')
tag3 = models.CharField(max_length=100, default='Best')
tag4 = models.CharField(max_length=100, default='News')
tag5 = models.CharField(max_length=100, default='PC')
slug = models.SlugField(max_length=250, null=True, blank=True)
body = models.TextField()
CATEGORY_CHOICES = [
('NEWS', 'News'),
('ANDROID', 'Android'),
('PC', 'PC'),
('Machine Learning', 'Machine Learning'),
('OFFERS', 'Offers'),
('OTHERS', 'Others'),
('GAMING', 'Gaming'),
]
category = models.CharField(
max_length=20,
choices=CATEGORY_CHOICES,
default='OTHERS',
)
link = models.URLField(blank=True)
date = models.DateTimeField(auto_now_add=True)
pub_date = models.DateTimeField(auto_now_add=True)
thumb = models.ImageField(default='default.png', blank=True)
thumbnail = CloudinaryField('image')
author = models.ForeignKey(User, default=None, on_delete=models.CASCADE)
def __str__(self):
return self.title
def snippet(self):
return self.body[:100]+'...'
def get_absolute_url(self):
return '/' + self.title
views.py-
def Others(request):
homeblog_list = Home.objects.all().order_by('-date')
paginator = Paginator(homeblog_list, 10)
page = request.GET.get('page')
homeblog = paginator.get_page(page)
return render(request, 'home/Others.html', {'articles': homeblog})
现在,在 views.py 中,我只想获取 < Home.objects.all() 中的 "Others" 类别。order_by ('-date') > 这个函数。
怎么做。我应该传递什么参数?
使用filter()
Home.objects<b>.filter(category='OTHERS')</b>.order_by('-date')
如何在 Django 中为博客过滤特定类别? 我写了下面的代码,大家可以主要关注views.py
urls.py-
urlpatterns = [
path('', views.homepage, name="home"),
url(r'^News/', views.News, name="News"),
url(r'^Android/', views.android, name="android"),
url(r'^PC/', views.PC, name="PC"),
url(r'^MachineLearning/', views.MachineLearning, name="Offers"),
url(r'^Offers/', views.Offers, name="Offers"),
url(r'^Gaming/', views.Gaming, name="Gaming"),
url(r'^Others/', views.Others, name="Others"),
path('create/', views.article_create, name="create"),
url(r'^(?P<slug>[\w-]+)/$', views.article_detail, name="detail"),
url(r'^(?P<slug>[\w-]+)/edit/', views.article_update, name="post_edit"),
url(r'^(?P<slug>[\w-]+)/edit/post_edit', views.article_update, name="post_edit"),
url(r'^(?P<slug>[\w-]+)/delete/', views.article_delete, name="delete_post"),
]
models.py-
class Home(models.Model):
title = models.CharField(max_length=100)
tag1 = models.CharField(max_length=100, default='Tech')
tag2 = models.CharField(max_length=100, default='Android')
tag3 = models.CharField(max_length=100, default='Best')
tag4 = models.CharField(max_length=100, default='News')
tag5 = models.CharField(max_length=100, default='PC')
slug = models.SlugField(max_length=250, null=True, blank=True)
body = models.TextField()
CATEGORY_CHOICES = [
('NEWS', 'News'),
('ANDROID', 'Android'),
('PC', 'PC'),
('Machine Learning', 'Machine Learning'),
('OFFERS', 'Offers'),
('OTHERS', 'Others'),
('GAMING', 'Gaming'),
]
category = models.CharField(
max_length=20,
choices=CATEGORY_CHOICES,
default='OTHERS',
)
link = models.URLField(blank=True)
date = models.DateTimeField(auto_now_add=True)
pub_date = models.DateTimeField(auto_now_add=True)
thumb = models.ImageField(default='default.png', blank=True)
thumbnail = CloudinaryField('image')
author = models.ForeignKey(User, default=None, on_delete=models.CASCADE)
def __str__(self):
return self.title
def snippet(self):
return self.body[:100]+'...'
def get_absolute_url(self):
return '/' + self.title
views.py-
def Others(request):
homeblog_list = Home.objects.all().order_by('-date')
paginator = Paginator(homeblog_list, 10)
page = request.GET.get('page')
homeblog = paginator.get_page(page)
return render(request, 'home/Others.html', {'articles': homeblog})
现在,在 views.py 中,我只想获取 < Home.objects.all() 中的 "Others" 类别。order_by ('-date') > 这个函数。 怎么做。我应该传递什么参数?
使用filter()
Home.objects<b>.filter(category='OTHERS')</b>.order_by('-date')