212 lines
5.9 KiB
Python
212 lines
5.9 KiB
Python
# _*_ coding:utf-8 _*_
|
||
import json
|
||
|
||
from django.http import JsonResponse
|
||
from django.shortcuts import render, get_object_or_404
|
||
from django.views.generic import View
|
||
from django.views.decorators.csrf import csrf_exempt
|
||
from django.db.models import Q
|
||
|
||
# Create your views here.
|
||
|
||
from .models import Blog, Category, Conment, Tagprofile
|
||
|
||
# 通用模块
|
||
tag_list = Tagprofile.objects.all() # 标签云
|
||
category_list = Category.objects.all() # 分类
|
||
article_rank = Blog.objects.all().order_by('-conment_nums')[:10] # 热门博客
|
||
comment_list = Conment.objects.all().order_by('-add_time')[:20] # 最新评论
|
||
|
||
|
||
class Index(View):
|
||
"""首页显示"""
|
||
|
||
def get(self, request):
|
||
article_list = Blog.objects.all().order_by('-edit_time')[:5]
|
||
article_rank = Blog.objects.all().order_by('-conment_nums')[:5]
|
||
|
||
return render(request, 'index.html', {
|
||
'article_list': article_list,
|
||
'article_rank': article_rank,
|
||
'category_list': category_list,
|
||
'tag_list': tag_list,
|
||
'comment_list': comment_list,
|
||
})
|
||
|
||
|
||
class About(View):
|
||
"""关于"""
|
||
|
||
def get(self, request):
|
||
return render(request, 'about.html', {
|
||
'article_rank': article_rank,
|
||
'category_list': category_list,
|
||
'tag_list': tag_list,
|
||
'comment_list': comment_list,
|
||
})
|
||
|
||
|
||
class Articles(View):
|
||
"""博客文章"""
|
||
|
||
def get(self, request, pk):
|
||
if pk:
|
||
category_obj = get_object_or_404(Category, id=pk)
|
||
category = category_obj.name
|
||
article_list = Blog.objects.filter(category_id=pk)
|
||
else: # pk=0时,获取全部列表
|
||
article_list = Blog.objects.all()
|
||
category = ''
|
||
count = article_list.count()
|
||
|
||
return render(request, 'articles.html', {
|
||
'article_list': article_list,
|
||
'category': category,
|
||
'count': count,
|
||
'category_list': category_list,
|
||
'tag_list': tag_list,
|
||
'article_rank': article_rank,
|
||
'comment_list': comment_list,
|
||
|
||
})
|
||
|
||
|
||
class Archive(View):
|
||
"""归档"""
|
||
|
||
def get(self, request):
|
||
article_list = Blog.objects.all().order_by('-edit_time')
|
||
|
||
return render(request, 'archive.html', {
|
||
'article_list': article_list,
|
||
'category_list': category_list,
|
||
'tag_list': tag_list,
|
||
'article_rank': article_rank,
|
||
'comment_list': comment_list,
|
||
})
|
||
|
||
|
||
class Link(View):
|
||
"""链接"""
|
||
|
||
def get(self, request):
|
||
return render(request, 'link.html', {
|
||
'category_list': category_list,
|
||
'tag_list': tag_list,
|
||
'article_rank': article_rank,
|
||
'comment_list': comment_list,
|
||
})
|
||
|
||
pass
|
||
|
||
|
||
class Message(View):
|
||
"""留言"""
|
||
|
||
def get(self, request):
|
||
return render(request, 'message_board.html', {
|
||
'category_list': category_list,
|
||
'tag_list': tag_list,
|
||
'article_rank': article_rank,
|
||
'comment_list': comment_list,
|
||
})
|
||
|
||
|
||
class Search(View):
|
||
"""搜索"""
|
||
def get(self,request):
|
||
key = request.GET.get('key','')
|
||
if key:
|
||
article_list = Blog.objects.filter(Q(title__icontains=key) | Q(content__icontains=key))
|
||
|
||
else:
|
||
article_list = ''
|
||
count = article_list.count()
|
||
return render(request,'search.html',{
|
||
'category_list': category_list,
|
||
'tag_list': tag_list,
|
||
'article_rank': article_rank,
|
||
'comment_list': comment_list,
|
||
'article_list':article_list,
|
||
'count':count,
|
||
'key':key,
|
||
})
|
||
|
||
|
||
@csrf_exempt
|
||
def GetComment(request):
|
||
"""
|
||
接收畅言的评论回推, post方式回推
|
||
:param request:
|
||
:return:
|
||
"""
|
||
arg = request.POST
|
||
data = arg.get('data')
|
||
data = json.loads(data)
|
||
title = data.get('title')
|
||
url = data.get('url')
|
||
source_id = data.get('sourceid')
|
||
if source_id not in ['message']:
|
||
article = Blog.objects.get(id=source_id)
|
||
article.commenced()
|
||
comments = data.get('comments')[0]
|
||
content = comments.get('content')
|
||
user = comments.get('user').get('nickname')
|
||
Conment(title=title, source_id=source_id, user=user, url=url, conment=content).save()
|
||
return JsonResponse({"status": "ok"})
|
||
|
||
|
||
class Detail(View):
|
||
"""博客详情页"""
|
||
|
||
def get(self, request, pk):
|
||
article = get_object_or_404(Blog, id=pk)
|
||
return render(request, 'detail.html', {
|
||
'article': article,
|
||
'source_id': article.id,
|
||
'tag_list': tag_list,
|
||
'category_list': category_list,
|
||
'article_rank': article_rank,
|
||
'comment_list': comment_list,
|
||
|
||
})
|
||
|
||
|
||
class Tagcloud(View):
|
||
"""标签云"""
|
||
|
||
def get(self, request, id):
|
||
tag = get_object_or_404(Tagprofile, id=id).tag_name
|
||
article_list = Blog.objects.filter(tag__tag_name=tag)
|
||
count = article_list.count()
|
||
return render(request, 'tag.html', {
|
||
'tag': tag,
|
||
'article_list': article_list,
|
||
'category_list': category_list,
|
||
'tag_list': tag_list,
|
||
'article_rank': article_rank,
|
||
'comment_list': comment_list,
|
||
'count': count,
|
||
})
|
||
|
||
|
||
def page_not_look(request):
|
||
"""全局403配置"""
|
||
from django.shortcuts import render_to_response
|
||
response = render_to_response('403.html',{})
|
||
response.status_code = 403
|
||
return response
|
||
|
||
def page_not_found(request):
|
||
"""全局404配置"""
|
||
from django.shortcuts import render_to_response
|
||
response = render_to_response('404.html',{})
|
||
response.status_code = 404
|
||
return response
|
||
|
||
def page_error(request):
|
||
"""全局500配置"""
|
||
from django.shortcuts import render_to_response
|
||
response = render_to_response('500.html',{})
|
||
response.status_code = 500
|
||
return response |