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.
101 lines
3.0 KiB
101 lines
3.0 KiB
4 years ago
|
from django.shortcuts import render
|
||
|
from .models import MyNew
|
||
|
from django.core.paginator import Paginator
|
||
|
from django.shortcuts import get_object_or_404
|
||
|
from pyquery import PyQuery as pq
|
||
|
|
||
|
|
||
|
def news(request, newName):
|
||
|
# 解析请求的新闻类型
|
||
|
submenu = newName
|
||
|
if newName == 'company':
|
||
|
newName = '企业要闻'
|
||
|
elif newName == 'industry':
|
||
|
newName = '行业新闻'
|
||
|
else:
|
||
|
newName = '通知公告'
|
||
|
# 从数据库获取、过滤和排序数据
|
||
|
newList = MyNew.objects.all().filter(
|
||
|
newType=newName).order_by('-publishDate')
|
||
|
for mynew in newList:
|
||
|
html = pq(mynew.description) # 使用pq方法解析html内容
|
||
|
mynew.mytxt = pq(html)('p').text() # 截取html段落文字
|
||
|
# 分页
|
||
|
p = Paginator(newList, 5)
|
||
|
if p.num_pages <= 1:
|
||
|
pageData = ''
|
||
|
else:
|
||
|
page = int(request.GET.get('page', 1))
|
||
|
newList = p.page(page)
|
||
|
left = []
|
||
|
right = []
|
||
|
left_has_more = False
|
||
|
right_has_more = False
|
||
|
first = False
|
||
|
last = False
|
||
|
total_pages = p.num_pages
|
||
|
page_range = p.page_range
|
||
|
if page == 1:
|
||
|
right = page_range[page:page + 2]
|
||
|
print(total_pages)
|
||
|
if right[-1] < total_pages - 1:
|
||
|
right_has_more = True
|
||
|
if right[-1] < total_pages:
|
||
|
last = True
|
||
|
elif page == total_pages:
|
||
|
left = page_range[(page - 3) if (page - 3) > 0 else 0:page - 1]
|
||
|
if left[0] > 2:
|
||
|
left_has_more = True
|
||
|
if left[0] > 1:
|
||
|
first = True
|
||
|
else:
|
||
|
left = page_range[(page - 3) if (page - 3) > 0 else 0:page - 1]
|
||
|
right = page_range[page:page + 2]
|
||
|
if left[0] > 2:
|
||
|
left_has_more = True
|
||
|
if left[0] > 1:
|
||
|
first = True
|
||
|
if right[-1] < total_pages - 1:
|
||
|
right_has_more = True
|
||
|
if right[-1] < total_pages:
|
||
|
last = True
|
||
|
pageData = {
|
||
|
'left': left,
|
||
|
'right': right,
|
||
|
'left_has_more': left_has_more,
|
||
|
'right_has_more': right_has_more,
|
||
|
'first': first,
|
||
|
'last': last,
|
||
|
'total_pages': total_pages,
|
||
|
'page': page,
|
||
|
}
|
||
|
return render(
|
||
|
request, 'newList.html', {
|
||
|
'active_menu': 'news',
|
||
|
'sub_menu': submenu,
|
||
|
'newName': newName,
|
||
|
'newList': newList,
|
||
|
'pageData': pageData,
|
||
|
})
|
||
|
|
||
|
|
||
|
def newDetail(request, id):
|
||
|
mynew = get_object_or_404(MyNew, id=id)
|
||
|
mynew.views += 1
|
||
|
mynew.save()
|
||
|
return render(request, 'newDetail.html', {
|
||
|
'active_menu': 'news',
|
||
|
'mynew': mynew,
|
||
|
})
|
||
|
|
||
|
|
||
|
def search(request):
|
||
|
keyword = request.GET.get('keyword')
|
||
|
newList = MyNew.objects.filter(title__icontains=keyword)
|
||
|
newName = "关于 " + "\"" + keyword + "\"" + " 的搜索结果"
|
||
|
return render(request, 'searchList.html', {
|
||
|
'active_menu': 'news',
|
||
|
'newName': newName,
|
||
|
'newList': newList,
|
||
|
})
|