45 lines
1.4 KiB
Python
45 lines
1.4 KiB
Python
from django.shortcuts import render
|
|
from django.core.paginator import Paginator
|
|
from .models import Article, Website
|
|
|
|
def article_list(request):
|
|
# 获取所有启用的网站
|
|
websites = Website.objects.filter(enabled=True)
|
|
|
|
# 获取筛选网站
|
|
selected_website = None
|
|
articles = Article.objects.all()
|
|
|
|
website_id = request.GET.get('website')
|
|
if website_id:
|
|
try:
|
|
selected_website = Website.objects.get(id=website_id)
|
|
articles = articles.filter(website=selected_website)
|
|
except Website.DoesNotExist:
|
|
pass
|
|
|
|
# 新增:处理关键词搜索
|
|
search_query = request.GET.get('q')
|
|
if search_query:
|
|
articles = articles.filter(title__icontains=search_query)
|
|
|
|
# 按创建时间倒序排列
|
|
articles = articles.order_by('-created_at')
|
|
|
|
# 分页
|
|
paginator = Paginator(articles, 10) # 每页显示10篇文章
|
|
page_number = request.GET.get('page')
|
|
page_obj = paginator.get_page(page_number)
|
|
|
|
return render(request, 'core/article_list.html', {
|
|
'page_obj': page_obj,
|
|
'websites': websites,
|
|
'selected_website': selected_website,
|
|
# 新增:传递搜索关键词到模板
|
|
'search_query': search_query
|
|
})
|
|
|
|
def article_detail(request, article_id):
|
|
article = Article.objects.get(id=article_id)
|
|
return render(request, 'core/article_detail.html', {'article': article})
|