def article(request, pid): """ 详情页,主要向移动端、搜索引擎提供,这个页面需要做风控 """ # 外链统计 add_referer_stats(request.META.get('HTTP_REFERER', '')) try: article = Article.objects.get(uindex=pid, status='active') except: return HttpResponseRedirect('https://dinorss.org/') user = get_login_user(request) if user: set_user_read_article(user.oauth_id, pid) # 判断是否命中敏感词 # if is_sensitive_content(pid, article.site_id): # user_agent = parse(request.META.get('HTTP_USER_AGENT', '')) # # if user_agent.is_mobile or user_agent.is_bot: # logger.warning(f'文章命中了敏感词,转到原文:`{article.title}`{pid}') # return redirect(article.src_url) # else: # logger.warning(f'文章命中了敏感词,禁止访问:`{article.title}`{pid}') # return redirect('index') context = dict() context['article'] = article context['user'] = user return render(request, 'mobile/article.html', context=context)
def get_article_detail(request): """ 获取文章详情;已登录用户记录已读 TODO 服务器记录阅读数 """ uindex = request.POST.get('id') user = get_login_user(request) mobile = request.POST.get('mobile', False) try: article = Article.objects.get(uindex=uindex, status='active') except: logger.info(f"获取文章详情请求处理异常:`{uindex}") return HttpResponseNotFound("Param Error") if user: set_user_read_article(user.oauth_id, uindex) context = dict() context['article'] = article context['user'] = user if mobile: return render(request, 'mobile/article.html', context=context) else: return render(request, 'article/index.html', context=context)
def user_mark_read_all(request): """ 设置全部已读 """ ids = request.POST.get('ids', '').split(',') user = get_login_user(request) if user: for uindex in ids: set_user_read_article(user.oauth_id, uindex) return JsonResponse({}) return HttpResponseNotFound("Param error")