def UploadFileView(request): ''' 上传文件 :param request: 客户端请求头 :return: html页面 ''' user = User.objects.get(id=request.user.id) if user.is_upload == 0: return redirect('/') # 检测用户上传权限 form = UPfileForm() page = request.GET.get('page', 1) if request.method == 'POST': file = request.FILES['file'] name, filename = blog.randNmae() + '_' + file.name, file.name Upload_file, user = settings.MEDIA_ROOT_FILE + \ name, User.objects.get(id=request.user.id) with open(Upload_file, 'wb') as f: for file_bytes in file.chunks(): f.write(file_bytes) str = 'stat' if platform.system( ) != 'Windows' else '' # UNIX和类UNIX(例如linux)系统会少四个字符 upfile = UPfile(name=filename, file='/' + str + Upload_file.lstrip(settings.BASE_DIR), user=user, time=datetime.datetime.now(tz=pytz.timezone('UTC'))) upfile.save() tips = '上传文件成功' upfile = UPfile.objects.filter(user=user).order_by('-time').all() post_num = len(upfile) paginator, pageInfo = paginatorPage( upfile, settings.HAYSTACK_SEARCH_RESULTS_PER_PAGE) return render(request, 'UploadFile.html', locals(), RequestContext(request))
def collection_managementView(request): ''' 收藏文章管理 :param request: 客户端请求头 :return: hrml页面 ''' title = '收藏的文章' page = request.GET.get('page', 1) root_user = User.objects.get(id=request.user.id) collection_list = Collection.objects.filter(user=root_user).all() paginator, pageInfo = paginatorPage( collection_list, settings.HAYSTACK_SEARCH_RESULTS_PER_PAGE, page) return render(request, 'collection_manag.html', locals(), RequestContext(request))
def attention_managementView(request): ''' 关注博主管理 :param request: 客户端请求头 :return: hrml页面 ''' title = '关注的博主' page = request.GET.get('page', 1) root_user = User.objects.get(id=request.user.id) attention_list = Attention.objects.filter(user=root_user).all() for i in attention_list: i.attention_id = User.objects.filter(id=i.attention_id).get() paginator, pageInfo = paginatorPage( attention_list, settings.HAYSTACK_SEARCH_RESULTS_PER_PAGE, page) return render(request, 'attention_manag.html', locals(), RequestContext(request))
def indexView(request): ''' 首页 :param request: 客户端请求头 :return: html页面 ''' page = request.GET.get('page', 1) post_list = Post.objects.all().order_by('-time') # 博客文章列表 post_read = Post.objects.all().order_by('-readnumber')[:5] # 博客文章列表 archive_list = Post.objects.distinct_date() tags_list = Tags.objects.all() for post in post_read: if len(post.title) > 12: post.title = post.title[:12] + '...' paginator, pageInfo = paginatorPage( post_list, settings.HAYSTACK_SEARCH_RESULTS_PER_PAGE, page) # 文章分页 return render(request, 'index.html', locals(), RequestContext(request))
def homeView(request): ''' 用户中心 :param request: 客户端请求头 :return: html页面 ''' user = User.objects.get(id=request.user.id) page = request.GET.get('page', 1) profile = Profile.objects.filter(user=user).first() if not profile: profile = Profile(user=user, self_reprot='这个人很懒,什么也没有写!') profile.save() post_list = Post.objects.filter(user=user).order_by('-time').all() attention_list = Attention.objects.filter(user=user).all() num_attentiom = len(attention_list) fan_list = Attention.objects.filter(attention_id=user.id).all() num_fan = len(fan_list) paginator, pageInfo = paginatorPage( post_list, settings.HAYSTACK_SEARCH_RESULTS_PER_PAGE, page) return render(request, 'home.html', locals(), RequestContext(request))
def guestbookView(request): if request.method == 'POST': username = request.POST.get("username") title = request.POST.get("title") content = request.POST.get("content") if re.match(r'<script>.*?</script>', content): messages.error(request, '留言失败,检测提交js脚本') return redirect('/guestbook/') publish = timezone.now() message = models.Message(title=title, content=content, username=username, publish=publish) message.save() messages.success(request, '留言成功') return redirect('/guestbook/') page = request.GET.get('page', 1) messageslist = models.Message.objects.all().order_by('-publish') paginator, pageInfo = paginatorPage( messageslist, settings.HAYSTACK_SEARCH_RESULTS_PER_PAGE, page) return render(request, 'guestbook.html', locals(), RequestContext(request))
def userView(request): ''' 用户信息 :param request: 客户端请求头 :param username: 用户的id :return: html页面 ''' page = request.GET.get('page', 1) uid = request.GET.get('uid', None) if not uid: from django.template import loader info = '404页面没有找到' return HttpResponse(loader.get_template("error.html").render(locals()), status=404) else: user_info = User.objects.filter(id=uid).first() profile = Profile.objects.get(user=user_info) post_list = Post.objects.filter(user=user_info).order_by('-time').all() dynamic = Dynamic.objects.filter(user=user_info).first() if not dynamic: dynamic = Dynamic(user=user_info) dynamic.save() num_attention = dynamic.dynamic_attention attention_list = Attention.objects.filter( attention_id=user_info.id).all() if request.user.id: is_login = True for i in attention_list: if i.user == request.user and i.is_attention == 1: attention = 1 else: is_login, attention = False, 0 num_fan = len(attention_list) post_num = len(post_list) paginator, pageInfo = paginatorPage( post_list, settings.HAYSTACK_SEARCH_RESULTS_PER_PAGE) return render(request, 'user.html', locals(), RequestContext(request))
def postView(request, id): ''' 博客文章 :param request: 客户端请求头 :param id: 博客文章id :return: html页面 ''' post = Post.objects.get(id=id) form, page, user = CommentForm(), request.GET.get('page', 1), None # 提交评论 if request.method == 'POST': user = User.objects.get(id=request.user.id) content = request.POST.get('content', '') if re.match(r'<script>.*?</script>', content) or content == '': messages.error(request, '评论失败') else: comment = Comment(content=content, post=post, user=user, time=timezone.now()) comment.save() if not post.user == get_user(request): notify.send(get_notifications(), recipient=user, verb=get_name(user) + ' 评论了你的文章<br/>', level='info') messages.success(request, '评论成功') return redirect("/post/{}".format(id)) # 动态列表信息 dynamic = Dynamic.objects.filter(post=id).first() userdynamic = UserDynamic.objects.filter(user=post.user).first() like_list = Like.objects.filter(post=post) collection_list = Collection.objects.filter(post=post) attention_list = Attention.objects.filter(attention_id=post.user.id) if not userdynamic: # 如果用户动态列表不存在就创建 userdynamic = UserDynamic(user=post.user, dynamic_search=0, dynamic_like=0, dynamic_attention=0) userdynamic.save() if not dynamic: # 如果博客动态列表不存在就创建 dynamic = Dynamic( post=post, dynamic_like=0, dynamic_collection=0, ) dynamic.save() num_attention, user_info = userdynamic.dynamic_attention, post.user if request.user.id: user = get_user(request) if post.user.id != request.user.id: post.readnumber = int(post.readnumber) + 1 post.save() for i in like_list: if i.user.id == user.id and i.is_like == 1: like = 1 for j in collection_list: if j.user.id == user.id and j.is_collection == 1: collection = 1 for k in attention_list: if k.user.id == user.id and k.is_attention == 1: attention = 1 # 评论分页 comment = Comment.objects.filter(post=post).order_by('-time').all() for c in comment: c.reply = Reply.objects.filter(comment=c.id).all().order_by("time") paginator, pageInfo = paginatorPage( comment, settings.HAYSTACK_SEARCH_RESULTS_PER_PAGE, page) return render(request, 'post.html', locals(), RequestContext(request))