|
|
@@ -15,27 +15,30 @@ from comment.models import Comment
|
|
|
def article_list(request):
|
|
|
search = request.GET.get('search')
|
|
|
order = request.GET.get('order')
|
|
|
+ tag = request.GET.get('tag')
|
|
|
+ column = request.GET.get('column')
|
|
|
+ article_list = ArticlePost.objects.all()
|
|
|
+ # 搜索查询集
|
|
|
if search:
|
|
|
- if order == 'total_views':
|
|
|
- article_list = ArticlePost.objects.filter(
|
|
|
- Q(title__icontains=search) |
|
|
|
- Q(body__icontains=search)
|
|
|
- ).order_by('-total_views')
|
|
|
- else:
|
|
|
- article_list = ArticlePost.objects.filter(
|
|
|
- Q(title__icontains=search) |
|
|
|
- Q(body__icontains=search)
|
|
|
- )
|
|
|
+ article_list = article_list.filter(
|
|
|
+ Q(title__icontains=search) |
|
|
|
+ Q(body__icontains=search)
|
|
|
+ )
|
|
|
else:
|
|
|
search = ''
|
|
|
- if order == 'total_views':
|
|
|
- article_list = ArticlePost.objects.all().order_by('total_views')
|
|
|
- else:
|
|
|
- article_list = ArticlePost.objects.all()
|
|
|
- paginator = Paginator(article_list, 3)
|
|
|
+ # 分类查询集
|
|
|
+ if column is not None and column.isdigit():
|
|
|
+ article_list = article_list.filter(column=column)
|
|
|
+ # 标签查询集
|
|
|
+ if tag and tag != 'None':
|
|
|
+ article_list = article_list.filter(tags__name__in=[tag])
|
|
|
+ # 排序
|
|
|
+ if order == 'total_views':
|
|
|
+ article_list = article_list.order_by('-total_views')
|
|
|
+ paginator = Paginator(article_list, 10)
|
|
|
page = request.GET.get('page')
|
|
|
articles = paginator.get_page(page)
|
|
|
- context = {'articles': articles, 'order': order, 'search': search}
|
|
|
+ context = {'articles': articles, 'order': order, 'search': search, 'column': column, 'tag': tag, }
|
|
|
return render(request, 'article/list.html', context)
|
|
|
|
|
|
|
|
|
@@ -68,6 +71,7 @@ def article_create(request):
|
|
|
new_article.column = ArticleColumn.objects.get(id=request.POST['column'])
|
|
|
# 将新文章保存到数据库中
|
|
|
new_article.save()
|
|
|
+ article_post_form.save_m2m()
|
|
|
return redirect("article:article_list")
|
|
|
# 如果数据不合法,返回错误信息
|
|
|
else:
|