You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

97 lines
2.4 KiB

import math
from django.core.paginator import Paginator
from django.shortcuts import get_object_or_404, redirect, render
# Create your views here.
# 渲染主页面
from post.models import Post, Comment
from django import forms
# 1111111111111111111111111111111111111111
from django.forms import ModelForm
from .models import Comment # 假设Comment是你的评论模型
class CommentForm(ModelForm):
class Meta:
model = Comment
fields = '__all__'
def queryAll(request, num=1):
num = int(num)
#获取所有帖子信息
postList = Post.objects.all().order_by('-created')
#创建分页器对象
pageObj = Paginator(postList, 1)
#获取当前页的数据
perPageList = pageObj.page(num)
#生成页码数列表
# 每页开始页码
begin = (num - int(math.ceil(10.0 / 2)))
if begin < 1:
begin = 1
# 每页结束页码
end = begin + 9
if end > pageObj.num_pages:
end = pageObj.num_pages
if end <= 10:
begin = 1
else:
begin = end - 9
pageList = range(begin, end + 1)
return render(request, 'index.html', {'postList': perPageList, 'pageList': pageList, 'currentNum': num})
#阅读全文功能
def detail(request, postid):
postid = int(postid)
#根据postid查询帖子的详情信息
post = Post.objects.get(id=postid)
return render(request, 'detail.html', {'post': post})
#根据类别id查询所有帖子
def queryPostByCid(request, cid):
postList = Post.objects.filter(category_id=cid)
# Post.objects.filter(category__id=cid)
return render(request, 'article.html', {'postList': postList})
#根据发帖时间查询所有帖子
def queryPostByCreated(request, year, month):
postList = Post.objects.filter(created__year=year, created__month=month)
return render(request, 'article.html', {'postList': postList})
def post_detail(request, pk):
post = get_object_or_404(Post, pk=pk)
if request.method == 'POST':
form = CommentForm(request.POST)
if form.is_valid():
comment = form.save(commit=False)
comment.post = post
form.save()
return redirect('post_comments', pk=post.pk) # 重定向到文章详情页
else:
form = CommentForm()
context = {
'post': post,
'form': form,
}
return render(request, 'detail.html', context)