Exemple #1
0
def filter(request, site, condition, val):
    """个人主页筛选"""
    blog = models.Blog.objects.filter(site=site).first()
    if not blog:
        return redirect('/')
    tag_list = models.Tag.objects.filter(blog=blog).values(
        'nid', 'title').annotate(c=Count('nid'))
    category_list = models.Article.objects.filter(blog=blog).values(
        'category_id',
        'category__title',
    ).annotate(c=Count('nid'))
    date_list = models.Article.objects.filter(blog=blog).extra(
        select={
            'c': "strftime('%%Y年%%m月',create_time)"
        }).values('c').annotate(ct=Count('nid'))
    if condition == 'tag':
        all_count = models.Article.objects.filter(tags=val,
                                                  blog=blog).all().count()
        urls = request.path_info
        page_info = Pagination(request.GET.get('page'), all_count, 5, 5)
        article_list = models.Article.objects.filter(
            tags__nid=1, blog=blog).all()[page_info.start:page_info.end]
        print('zxzxzxccz', val, article_list)
        page_str = page_info.page_str(urls)
    elif condition == 'category':
        all_count = models.Article.objects.filter(category_id=val,
                                                  blog=blog).all().count()
        urls = request.path_info
        page_info = Pagination(request.GET.get('page'), all_count, 5, 5)
        article_list = models.Article.objects.filter(
            category_id=val, blog=blog).all()[page_info.start:page_info.end]
        page_str = page_info.page_str(urls)
    elif condition == 'date':

        all_count = models.Article.objects.filter(blog=blog).extra(
            where=['strftime("%%Y年%%m月", create_time)=%s'], params=[
                val,
            ]).all().count()
        urls = request.path_info
        page_info = Pagination(request.GET.get('page'), all_count, 5, 5)
        article_list = models.Article.objects.filter(blog=blog).extra(
            where=['strftime("%%Y年%%m月",create_time)=%s'], params=[
                val,
            ]).all()[page_info.start:page_info.end]
        # select * from tb where blog_id=1 and strftime("%Y-%m",create_time)=2017-01
        page_str = page_info.page_str(urls)
    else:
        article_list = []
        page_str = ''

    return render(
        request, 'home_summary_list.html', {
            'blog': blog,
            'tag_list': tag_list,
            'category_list': category_list,
            'date_list': date_list,
            'article_list': article_list,
            "page_str": page_str,
        })
Exemple #2
0
def index(request, *args, **kwargs):
    """
    博客首页:展现全部博文
    :param request:
    :return:
    """
    """
    type_choice = [
        (1, 'Python'),
        (2, 'Django'),
        (3, 'book'),
        (4, '区块链'),
        (5, '人工智能'),
    ]
    """
    print(kwargs)
    article_type_list = models.Article.type_choice
    if kwargs:
        article_type_id = int(kwargs['article_type_id'])
        base_url = reverse('web_home:index', kwargs=kwargs)
        print(article_type_id)
        data_count = models.Article.objects.filter(
            article_type_id=article_type_id).count()
        print(data_count)
        page_obj = Pagination(request.GET.get('p'), data_count)
        # 每页文章列表
        article_list = models.Article.objects.filter(
            article_type_id=article_type_id).order_by(
                '-nid')[page_obj.start:page_obj.end]
        page_str = page_obj.page_str(base_url)
    else:
        article_type_id = None
        base_url = '/'
        data_count = models.Article.objects.all().count()

        page_obj = Pagination(request.GET.get('p'), data_count)
        # 每页文章列表
        article_list = models.Article.objects.all().order_by(
            '-nid')[page_obj.start:page_obj.end]
        page_str = page_obj.page_str(base_url)

    return render(
        request, 'web_home/index.html', {
            'article_type_id': article_type_id,
            'article_type_list': article_type_list,
            'article_list': article_list,
            'page_str': page_str,
        })
Exemple #3
0
def home(request, site):
    """个人主页"""
    blog = models.Blog.objects.filter(site=site).first()
    # Article 连接category通过category_id where blog_id=blog.nid 文章分类表
    category_list = models.Article.objects.filter(blog=blog).values(
        'category_id',
        'category__title',
    ).annotate(c=Count('nid'))
    tag_list = models.Tag.objects.filter(blog=blog).values(
        'nid', 'title').annotate(c=Count('nid'))
    date_list = models.Article.objects.filter(blog=blog).extra(
        # select={'c': "date_format(create_time,'%%Y年%%m月')"}).values('c').annotate(ct=Count('nid'))
        select={
            'c': "strftime('%%Y年%%m月',create_time)"
        }).values('c').annotate(ct=Count('nid'))
    all_count = blog.article_set.all().count() if blog else 0
    urls = request.path_info
    page_info = Pagination(request.GET.get('page'), all_count, 5, 5)
    page_str = page_info.page_str(urls)
    article_list = blog.article_set.filter(
        blog=blog).all()[page_info.start:page_info.end] if blog else ''
    if not blog:
        return redirect('/')
    return render(
        request, "home.html", {
            "blog": blog,
            'article_list': article_list,
            'page_str': page_str,
            'category_list': category_list,
            'tag_list': tag_list,
            "date_list": date_list
        })
Exemple #4
0
def index(request, *args, **kwargs):
    article_type_list = models.Article.article_type_choices  # [(1, 'python'), (2, 'linux'), (3, 'OpenStack'), (4, 'GoLang')]

    if kwargs:
        article_type_id = int(kwargs['article_type_id'])
        base_url = reverse('index', kwargs=kwargs)  # /article_type/1.html
    else:
        article_type_id = None
        base_url = '/'  # /

    data_count = models.Article.objects.filter(
        **kwargs).count()  # 根据文章标签搜索到的数据库里一共存有多少篇该标签下的文章

    page_obj = Pagination(request.GET.get('p', 1),
                          data_count,
                          per_page_article_num=5,
                          pager_num=7)  # 为了获取start和end

    article_list = models.Article.objects.filter(
        **kwargs).order_by('-aid')[page_obj.start:page_obj.end]  # 从数据库获取要显示的文章
    # print(111, article_list)

    page_str = page_obj.page_str(base_url)

    return render(
        request, 'web/index.html', {
            'article_type_list': article_type_list,
            'article_type_id': article_type_id,
            'article_list': article_list,
            'page_str': page_str,
        })
Exemple #5
0
def index(request, *args, **kwargs):
    """
    首頁主站
    """
    # 文章內建分類列表
    article_type_list = models.Article.type_choices

    # 判斷分類和url
    if kwargs:
        article_type_id = int(kwargs['article_type_id'])
        base_url = reverse('index', kwargs=kwargs)
    else:
        article_type_id = None
        base_url = "/"

    # 分頁
    data_count = models.Article.objects.filter(**kwargs).count()  # 文章數
    current_page = request.GET.get('p')
    print(current_page)
    page_obj = Pagination(data_count, current_page, perPageItemNum=4)
    page_str = page_obj.page_str(base_url)

    # 篩選文章(照nid倒序排列),並根據頁數不同而改變文章
    article_list = models.Article.objects.filter(
        **kwargs).order_by('-nid')[page_obj.start():page_obj.end()]
    blog_list = models.Blog.objects.all()[:5]

    return render(request, "index.html", locals())
Exemple #6
0
def get_dic(request, Model, Url, blog_id, **kwargs):
    data_count = Model.objects.filter(blog_id=blog_id).count()
    page = Pagination(request.GET.get('p', 1), data_count)
    obj = Model.objects.filter(blog_id=blog_id).all()[page.start:page.end]
    page_str = page.page_str(Url)
    kwargs['p'] = page.current_page
    return {'obj': obj, 'cate_dict': kwargs, 'page_str': page_str}
Exemple #7
0
def get_blogger(request, site):
    blog = models.Blog.objects.filter(site=site).select_related('user').first()

    if not blog:
        return redirect('/')
    tag_list = models.Tag.objects.filter(blog=blog)
    # tag_list = models.Tag.objects.filter(blog_id=blog.nid)
    category_list = models.Category.objects.filter(blog=blog)

    date_list = models.Article.objects.raw(
        'select nid, count(nid) as num,strftime("%%Y-%%m",create_time) as ctime from repository_article where blog_id=%d group by strftime("%%Y-%%m",create_time)'
        % (blog.nid))

    # blog_user_id = request.GET.get('nid')

    # user = models.UserInfo.objects.filter(nid=blog.user.nid).first()
    data_count = blog.user.f.count()
    page_obj = Pagination(request.GET.get('p'), data_count)
    follower_list = models.UserInfo.objects.filter(nid=blog.user.nid).first(
    ).f.order_by('-nid')[page_obj.start:page_obj.end]
    base_url = "/blogger_list/" + site + ".html"
    page_str = page_obj.page_str(base_url)
    return render(
        request, 'follower_list.html', {
            'blog': blog,
            'tag_list': tag_list,
            'category_list': category_list,
            'date_list': date_list,
            'follower_list': follower_list,
            'page_str': page_str
        })
Exemple #8
0
def home(request, site):
    blog = models.Blog.objects.filter(site=site).select_related('user').first()
    if not blog:
        return redirect('/')
    base_url = site + ".html"
    tag_list = models.Tag.objects.filter(blog=blog)
    type_list = models.Category.objects.filter(blog=blog)
    date_list = models.Article.objects.raw(
        'select nid, count(nid) as num,strftime("%Y-%m",create_time) as ctime from repository_article group by strftime("%Y-%m",create_time)'
    )

    # article_list = models.Article.objects.filter(blog=blog).order_by("nid").all()
    data_count = models.Article.objects.filter(blog=blog).count()  # 需要展示的总个数
    page_obj = Pagination(request.GET.get('p'), data_count,
                          per_page_count=4)  # 当前页码
    # 为了显示最新内容在最上面,需要加上order_by,参数加-就是倒序(desc),不加就是顺序(asc)
    article_list = models.Article.objects.filter(
        blog=blog).order_by('nid')[page_obj.start:page_obj.end]
    # page_str就是分页工具最后生成的那一排a标签,要传到前端去显示
    page_str = page_obj.page_str(base_url)
    return render(
        request, 'home.html', {
            'blog': blog,
            "tag_list": tag_list,
            "type_list": type_list,
            "date_list": date_list,
            "article_list": article_list,
            "page_str": page_str,
        })
Exemple #9
0
def detail(request, site, nid):
    blog = models.Blog.objects.filter(site=site).first()
    if not blog:
        return redirect('/')
    base_url = "/" + site + "/" + nid + ".html"
    tag_list = models.Tag.objects.filter(blog_id=blog.bid)
    type_list = models.Category.objects.filter(blog_id=blog.bid)
    date_list = models.Article.objects.raw(
        'select nid, count(nid) as num,strftime("%Y-%m",create_time) as ctime from repository_article group by strftime("%Y-%m",create_time)'
    )

    # article = models.Article.objects.filter(blog_id=blog.bid,nid=nid).first()
    article_detail = models.ArticleDetail.objects.filter(
        article_id=nid).first()
    # comment_list = models.Comment.objects.filter(article_id=nid).all()
    data_count = models.Comment.objects.filter(article_id=nid).count()
    page_obj = Pagination(request.GET.get('p'), data_count)
    comment_list = models.Comment.objects.filter(
        article_id=nid).order_by('-nid')[page_obj.start:page_obj.end]
    #page_str就是分页工具最后生成的那一排a标签,要传到前端去显示
    page_str = page_obj.page_str(base_url)

    return render(
        request, 'home_detail.html', {
            "blog": blog,
            "tag_list": tag_list,
            "type_list": type_list,
            "date_list": date_list,
            "article": article_detail,
            "comment_list": comment_list,
            "page_str": page_str,
        })
Exemple #10
0
def index(request, *args, **kwargs):
    print(request)
    print(kwargs)

    if kwargs:
        article_type_id = int(kwargs['article_type_id'])
        #在HTML中:{% url "index" article_type_id=1 %}             => all/1.html
        #在views中:reverse('index',kwargs={"article_type_id":1})  =>all/1.html
        base_url = reverse('index', kwargs=kwargs)
    else:
        article_type_id = None
        base_url = '/'

    #分页查看,必要参数:当前页码、需要展示数据的总个数
    data_count = models.Article.objects.filter(**kwargs).count()  #需要展示的总个数
    page_obj = Pagination(request.GET.get('p'), data_count)  #当前页码
    #为了显示最新内容在最上面,需要加上order_by,参数加-就是倒序(desc),不加就是顺序(asc)
    article_list = models.Article.objects.filter(
        **kwargs).order_by('nid')[page_obj.start:page_obj.end]
    type_list = models.Article.article_type_choices
    #page_str就是分页工具最后生成的那一排a标签,要传到前端去显示
    page_str = page_obj.page_str(base_url)

    return render(
        request, "index.html", {
            "type_list": type_list,
            "article_type_id": article_type_id,
            "article_list": article_list,
            "page_str": page_str,
        })
Exemple #11
0
def detail(request, site, nid):
    """
    博文详细页

    """
    blog = models.Blog.objects.filter(site=site).select_related('user').first()
    tag_list = models.Tag.objects.filter(blog=blog).all()
    category_list = models.Category.objects.filter(blog=blog)
    date_list = models.Article.objects.raw('select nid,count(nid) as num,DATE_FORMAT(create_time,"%%Y年%%m月") as ctime from repository_article group by DATE_FORMAT(create_time,"%%Y年%%m月")')
    article = models.Article.objects.filter(blog=blog,nid=nid).select_related('category', 'articledetail').first()
    # comment_list = models.Comment.objects.filter(article_id=nid).all()
    base_url = '/%s/%s.html'%(site,nid)
    data_count  = models.Comment.objects.filter(article_id=nid).count()
    page_obj = Pagination(request.GET.get('p'),data_count)
    comment_list = models.Comment.objects.filter(article_id=nid).order_by('-nid')[page_obj.start:page_obj.end]
    page_str = page_obj.page_str(base_url)

    return render(request, 'home_detail.html',{
        "blog":blog,
        "tag_list":tag_list,
        "category_list":category_list,
        "date_list":date_list,
        "article":article,
        "comment_list":comment_list,
        "page_str":page_str})
Exemple #12
0
def tag(request):
    if request.method == 'GET':
        blog = request.user.blog
        tag_list = models.Tag.objects.filter(blog=blog).annotate(
            c=Count("article")).values("title", "c", 'nid')
        page = Pagination(request.GET.get('p', 1), tag_list.count())
        tag_list = tag_list[page.start:page.end]
        page_str = page.page_str(reverse('backend:tag'))
        return render(request, 'backend_tag.html', {
            'tag_list': tag_list,
            'page_str': page_str
        })
    else:
        '''修改tag'''
        title = request.POST.get('title', None)
        nid = request.POST.get('nid', 0)
        blog = request.user.blog
        ret = {"status": 0, "msg": ""}
        if title and nid:
            new_title_exist = models.Tag.objects.filter(blog=blog, title=title)
            if new_title_exist:
                ret['status'] = 1
                ret['msg'] = '修改失败,"' + title + '"已存在!'
            else:
                models.Tag.objects.filter(blog=blog,
                                          nid=nid).update(title=title)
        else:
            ret['status'] = 1
            ret['msg'] = '标签名不能为空'

        return JsonResponse(ret)
Exemple #13
0
def index(request, *args, **kwargs):
    """
    博客首页,展示全部博文
    :param request:
    :return:
    """

    article_type_list = models.Article.type_choices

    if kwargs:
        article_type_id = int(kwargs['article_type_id'])
        base_url = reverse('index', kwargs=kwargs)
    else:
        article_type_id = None
        base_url = '/'

    data_count = article_list = models.Article.objects.filter(**kwargs).count()

    page_obj = Pagination(request.GET.get('p'), data_count)
    article_list = models.Article.objects.filter(
        **kwargs).order_by('-nid')[page_obj.start:page_obj.end]
    page_str = page_obj.page_str(base_url)

    return render(
        request, 'index.html', {
            'article_list': article_list,
            'article_type_id': article_type_id,
            'article_type_list': article_type_list,
            'page_str': page_str,
        })
Exemple #14
0
def article(request, *args, **kwargs):
    """
    博主个人文章管理
    :param request:
    :return:
    """
    blog_id = request.session['user_info']['blog__nid']
    condition = {}
    for k, v in kwargs.items():
        if v == '0':
            pass
        else:
            condition[k] = v
    condition['blog_id'] = blog_id
    data_count = models.Article.objects.filter(**condition).count()
    page = Pagination(request.GET.get('p', 1), data_count)
    result = models.Article.objects.filter(**condition).order_by('-nid').only(
        'nid', 'title', 'blog').select_related('blog')[page.start:page.end]
    page_str = page.page_str(reverse('article', kwargs=kwargs))
    category_list = models.Category.objects.filter(blog_id=blog_id).values(
        'nid', 'title')
    type_list = map(lambda item: {
        'nid': item[0],
        'title': item[1]
    }, models.Article.type_choices)
    kwargs['p'] = page.current_page
    return render(
        request, 'backend_article.html', {
            'result': result,
            'page_str': page_str,
            'category_list': category_list,
            'type_list': type_list,
            'arg_dict': kwargs,
            'data_count': data_count
        })
Exemple #15
0
def tag(request):
    """
    博主个人标签管理
    :param request:
    :return:
    """
    data_count = models.Tag.objects.all().count()
    page_obj = Pagination(request.GET.get('p'), data_count)
    base_url = '/backend/tag.html'
    page_str = page_obj.page_str(base_url)
    print(page_str)
    if request.method == "GET":
        row_list = models.Tag.objects.all().order_by(
            '-nid')[page_obj.start:page_obj.end]
        return render(request, 'backend_tag.html', locals())
    elif request.method == "POST":
        nickname = request.POST.get('nickname')
        blog_id = request.session['user_info']['blog__nid']
        if nickname:
            obj = models.Tag(title=nickname, blog_id=blog_id)
            obj.save()
            row_list = models.Tag.objects.all().order_by(
                '-nid')[page_obj.start:page_obj.end]
            return render(request, 'backend_tag.html', locals())
        else:
            row_list = models.Tag.objects.all().order_by(
                '-nid')[page_obj.start:page_obj.end]
            return render(request, 'backend_tag.html', locals())
Exemple #16
0
def home(request, site):
    """
    博主个人首页
    :param request:
    :param site: 博主的网站后缀如:http://xxx.com/wupeiqi.html
    :return:
    """
    blog = models.Blog.objects.filter(site=site).select_related('user').first()

    if not blog:
        return redirect('/')
    tag_list = models.Tag.objects.filter(blog=blog)
    # tag_list = models.Tag.objects.filter(blog_id=blog.nid)
    category_list = models.Category.objects.filter(blog=blog)

    date_list = models.Article.objects.raw(
        'select nid, count(nid) as num,strftime("%%Y-%%m",create_time) as ctime from repository_article where blog_id=%d group by strftime("%%Y-%%m",create_time)'
        % (blog.nid))

    data_count = models.Article.objects.filter(blog=blog).count()
    page_obj = Pagination(request.GET.get('p'), data_count)
    article_list = models.Article.objects.filter(
        blog=blog).order_by('-nid')[page_obj.start:page_obj.end]
    base_url = "/" + site + ".html"
    page_str = page_obj.page_str(base_url)

    return render(
        request, 'home.html', {
            'blog': blog,
            'tag_list': tag_list,
            'category_list': category_list,
            'date_list': date_list,
            'article_list': article_list,
            'page_str': page_str,
        })
Exemple #17
0
def category(request):
    """
    博主个人分类管理
    """
    #用户对象
    user_obj = models.UserInfo.objects.filter(nid=str(request.session.get('user_info')["nid"])).first()
    #博客对象
    blog = models.Blog.objects.filter(site=user_obj.username).select_related('user').first()
    #分页
    base_url = '/backend/category.html'
    category_count = article_list = models.Category.objects.filter(blog_id=blog.nid).count()
    page_obj = Pagination(request.GET.get('p'),category_count)
    page_str = page_obj.page_str(base_url)
    #分类对象
    category_list = models.Category.objects.filter(blog=blog).all().order_by('nid')[page_obj.start:page_obj.end]
    ret={"status":False,"error":None,"data":None}
    if request.method =='GET':
        return render(request, 'backend_category.html',{"user_obj":user_obj,"blog":blog,"category_list":category_list,"page_str":page_str})
    elif request.method == "POST":
        ret["status"]=True
        if request.POST.get("category_type") == "delete":
            category_id = request.POST.get("category_id")
            models.Article.objects.filter(category_id=category_id).update(category_id='')
            models.Category.objects.filter(nid=category_id).delete()
        elif request.POST.get("category_type") == "save":
            category_id = request.POST.get("category_id")
            category_name = request.POST.get("category_name")
            models.Category.objects.filter(nid=category_id).update(title=category_name)
        else:
            category_name = request.POST.get("category_name")
            models.Category.objects.create(title=category_name,blog_id=blog.nid)
        return HttpResponse(json.dumps(ret))
Exemple #18
0
def article(request, *args, **kwargs):
    # print(kwargs)
    blog_id = request.session['user_info']['blog__bid']
    condition = {}
    for k, v in kwargs.items():
        if v == '0':
            pass
        else:
            condition[k] = v
    condition['blog_id'] = blog_id
    data_count = models.Article.objects.filter(**condition).count()
    page = Pagination(request.GET.get('p', 1), data_count)
    article_list = models.Article.objects.filter(
        **condition).order_by("-nid")[page.start:page.end]
    page_str = page.page_str(reverse('article', kwargs=kwargs))
    type_list = map(lambda item: {
        'nid': item[0],
        'title': item[1]
    }, models.Article.article_type_choices)
    category_list = models.Category.objects.filter(blog_id=blog_id).values(
        "nid", "title")
    # print(category_list)
    kwargs["p"] = page.current_page
    return render(
        request, "backend_article.html", {
            "page_str": page_str,
            "type_list": type_list,
            "category_list": category_list,
            'arg_dict': kwargs,
            "article_list": article_list,
            "data_count": data_count,
        })
Exemple #19
0
def article(request, *args, **kwargs):
    """
    博主个人文章管理
    :param request:
    :return:
    """
    blog_id = request.session['user_info']['blog__nid']
    condition = {}
    for k, v in kwargs.items():
        if v == '0':
            pass
        else:
            condition[k] = v
    article_type_id = kwargs.get('article_type_id')
    category_id = kwargs.get('category_id')
    category_list = models.Category.objects.filter(blog_id=blog_id).values(
        'nid', 'title')
    type_list = list(
        map(lambda item: {
            'nid': item[0],
            'title': item[1]
        }, models.Article.type_choices))

    # if article_type_id == 0:
    #     type_list = map(lambda item: {'nid': item[0], 'title': item[1]}, models.Article.type_choices)
    #     if category_id == 0:
    #         pass
    #     else:
    #         condition['category_id'] = category_id
    # else:
    #     type_obj = models.Article.objects.filter(id=article_type_id).first()
    #     type_list = map(lambda item: {'nid': item[0], 'title': item[1]}, models.Article.type_choices)
    #
    #     vlist = type_obj.article_type_id.all().values_list('nid', 'title')  # [(1,),(2,),(3,)]
    #     if not vlist:
    #         classification_id_list = []
    #     else:
    #         classification_id_list = list(zip(*vlist))[0]
    #
    #     if category_id == 0:
    #             condition['category_id__in'] = classification_id_list
    #     else:
    #         if category_id in classification_id_list:
    #             condition['category_id'] = category_id
    #         else:
    #             #方向指定,分类不在其中  [1,2,3]     分类:5
    #             kwargs['category_id'] = 0
    #             condition['category_id'] = classification_id_list

    condition['blog_id'] = blog_id
    data_count = models.Article.objects.filter(**condition).count()
    page = Pagination(request.GET.get('p', 1), data_count)
    page_str = page.page_str(reverse('article', kwargs=kwargs))
    kwargs['p'] = page.current_page

    result = models.Article.objects.filter(**condition).order_by('-nid').only(
        'nid', 'title', 'blog').select_related('blog')[page.start:page.end]

    return render(request, 'backend_article.html', locals())
Exemple #20
0
def test(request):

    page_obj = Pagination(request.GET.get('p'), 100)
    test_list = range(1, 100)[page_obj.start:page_obj.end]
    page_str = page_obj.page_str('/test/')

    return render(request, 'test.html', {
        'test_list': test_list,
        'page_str': page_str,
    })
Exemple #21
0
def user_list(request, *args, **kwargs):
    user_list = UserInfo.objects.all()
    page_obj = Pagination(user_list.count(), request.GET.get('p'))
    base_url = reverse('backend:user_list')
    page_str = page_obj.page_str(base_url)
    user_list = user_list[page_obj.start:page_obj.end]
    return render(request, 'backend_user_list.html', {
        'user_list': user_list,
        'page_str': page_str
    })
Exemple #22
0
def article(request, *args, **kwargs):  # article_type_id, tag__tid
    blog_id = request.session['userinfo']['blog__bid']

    search_condition = {}
    for k, v in kwargs.items():
        if v != '0':
            search_condition[k] = v
    # print(55, search_condition)

    tag_list = models.Tag.objects.filter(blog_id=blog_id).all()

    article_type_choices = models.Article.article_type_choices  # [(1, 'python'), (2, 'linux'), (3, 'OpenStack'), (4, 'GoLang')]
    article_type_list = list(
        map(lambda x: {
            'nid': x[0],
            'title': x[1]
        }, article_type_choices))
    # print(article_type_list)    # [{'nid': 1, 'title': 'python'}, {'nid': 2, 'title': 'linux'}, {'nid': 3, 'title': 'OpenStack'}, {'nid': 4, 'title': 'GoLang'}]

    # article_obj2 = models.Article.objects.filter(blog_id=blog_id, tag__article2tag__).all()
    # print(333,article_obj2)

    article_obj = models.Article.objects.filter(blog_id=blog_id,
                                                **search_condition)
    data_count = article_obj.count()
    page_obj = Pagination(
        request.GET.get('p', 1),
        data_count,
        per_page_article_num=10,
    )
    article_list = article_obj.order_by('-create_time')

    article_list2 = []
    for index, article in enumerate(article_list, 1):
        article_dict = {'index': index, 'article': article}
        article_list2.append(article_dict)

    # article_list2 = article_obj.order_by('-aid')[page_obj.start:page_obj.end]
    article_list3 = article_list2[page_obj.start:page_obj.end]

    page_str = page_obj.page_str(reverse('article', kwargs=kwargs))
    kwargs['p'] = page_obj.current_page

    return render(
        request, 'backend/article.html', {
            'article_type_list': article_type_list,
            'data_count': data_count,
            'article_list': article_list,
            'kwargs_dict': kwargs,
            'tag_list': tag_list,
            'page_str': page_str,
            'article_list3': article_list3,
        })
Exemple #23
0
def article(request, *args, **kwargs):
    '''
    博主个人博客后台管理
    :param request:
    :param args:
    :param kwargs:
    :return:
    '''
    print(kwargs)
    blog_id = request.session.get('user_info')['blog__nid']
    upload_avatar = request.session.get('user_info')['avatar']
    print(blog_id)
    print(upload_avatar)
    #  对传入的参数列表按照自己的意愿进行字典类型的转化
    condition = {}
    for k, v in kwargs.items():
        if v == '0':
            pass
        else:
            condition[k] = v
    condition['blog_id'] = blog_id

    data_count = models.Article.objects.filter(**condition).count()
    print(data_count)
    page = Pagination(request.GET.get('p', 1), data_count)
    result = models.Article.objects.filter(**condition).order_by('-nid').only(
        'nid', 'title', 'blog').select_related('blog')[page.start:page.end]
    page_str = page.page_str(reverse('article', kwargs=kwargs))
    category_list = models.Category.objects.filter(blog_id=blog_id).values(
        'nid', 'title')
    print(category_list)
    type_list = map(lambda item: {
        'nid': item[0],
        'title': item[1]
    }, models.Article.type_choices)
    # type_list 目前还只是一个迭代器对象要执行可以使用list(type_list)
    kwargs['p'] = page.current_page

    return render(
        request,
        'backend_article.html',
        {
            'upload_avatar': upload_avatar,
            'arg_dict': kwargs,
            'result': result,
            'page_str': page_str,
            'category_list': category_list,
            'type_list': type_list,
            'data_count': data_count,
        },
    )
Exemple #24
0
def report(request):
    if request.method == 'GET':

        data_count = models.Report.objects.count()
        page = Pagination(request.GET.get('p', 1), data_count)
        result = models.Report.objects.order_by('-id').select_related(
            'article_id', )[page.start:page.end]
        page_str = page.page_str("/report.html")

        return render(
            request, 'backend_report.html', {
                'result': result,
                'page_str': page_str,
                'data_count': data_count,
                'menu_string': request.session['menu_string'],
            })
Exemple #25
0
def tag(request):
    # -----------------要有blog才可使用-----------------
    blog_id = request.session['user_info']['blog__nid']
    if blog_id is None:
        return redirect("/backend/index.html")
    # --------------------------------------------------

    blog_id = request.session["user_info"]["blog__nid"]
    # 分頁
    data_count = models.Tag.objects.filter(blog_id=blog_id).count()
    current_page = request.GET.get("p")
    page_obj = Pagination(data_count, current_page, perPageItemNum=7)
    page_str = page_obj.page_str("/backend/tag.html")

    result = models.Tag.objects.filter(
        blog_id=blog_id)[page_obj.start():page_obj.end()]
    return render(request, "backend_tag.html", locals())
Exemple #26
0
def article(request, **kwargs):
    user_info = request.session.get('user_info')
    blog = Blog.objects.filter(user_id=user_info.get('id')).first()
    type_list = Classification.objects.filter(blog=blog)
    tag_list = Tags.objects.filter(blog=blog)
    condition = {}
    for k, v in kwargs.items():
        kwargs[k] = int(v)
    type_id = kwargs.get('type_id')
    tag_id = kwargs.get('tag_id')
    # print(type_id,tag_id)
    if type_id == 0:
        if tag_id == 0:
            pass
        else:
            condition['tags'] = tag_id
    else:
        if tag_id == 0:
            # Article.objects.filter(blog__classification=type_id)
            pass
        else:
            condition['tags'] = tag_id
        condition['article_classification_id'] = type_id
    condition['blog'] = blog
    # print(condition)
    article_list = Article.objects.filter(**condition).order_by(
        '-publish', '-id')
    # article_list = Article.objects.filter(blog=blog,).values('tags','article_classification_id','title')
    data_count = article_list.count()
    page_obj = Pagination(data_count, request.GET.get('p'))
    base_url = reverse('backend:backend_article',
                       kwargs={
                           'type_id': type_id,
                           'tag_id': tag_id
                       })
    page_str = page_obj.page_str(base_url)
    article_list = article_list[page_obj.start:page_obj.end]
    context = {
        'kwargs': kwargs,
        'type_list': type_list,
        'tag_list': tag_list,
        'article_list': article_list,
        'data_count': data_count,
        'page_str': page_str
    }
    return render(request, 'backend_article.html', context)
Exemple #27
0
def tag(request):
    blog_id = request.session['user_info']['blog__nid']

    data_count = models.Category.objects.count()
    page = Pagination(request.GET.get('p', 1), data_count)
    result = models.Tag.objects.filter(blog_id=blog_id).order_by(
        '-nid').select_related('blog')[page.start:page.end]
    page_str = page.page_str("/tag.html")
    article_list = models.Article.objects.filter(blog_id=blog_id)

    return render(
        request, 'backend_tag.html', {
            'result': result,
            'page_str': page_str,
            'article_list': article_list,
            'data_count': data_count,
            'menu_string': request.session['menu_string']
        })
Exemple #28
0
def index(request, *args, **kwargs):
    '''
    博客首页,展示全部博文
    :param request:
    :param args:
    :param kwargs:
    :return:
    '''
    article_type_list = models.Article.type_choices

    if kwargs:
        article_type_id = int(kwargs['article_type_id'])
        base_url = reverse('index', kwargs=kwargs)
    else:
        article_type_id = None
        base_url = '/'

    if article_type_id == 5:  ## 返回妹子图片
        article_type_id = 5
        meizi_list = models.MeiZi.objects.all()

        return render(
            request, 'meizi.html', {
                'article_type_id': article_type_id,
                'article_type_list': article_type_list
            })
    else:
        # ## 得到全部的数据
        data_count = article_list = models.Article.objects.filter(
            **kwargs).count()

        ## 分页对象
        page_obj = Pagination(1, data_count=data_count)
        article_list = models.Article.objects.filter(**kwargs).order_by(
            ('-nid'))[page_obj.start:page_obj.end]
        page_str = page_obj.page_str(base_url=base_url)

        return render(
            request, 'index.html', {
                'article_list': article_list,
                'article_type_id': article_type_id,
                'article_type_list': article_type_list,
                'page_str': page_str,
            })
Exemple #29
0
def category(request,*args,**kwargs):
    """
    博主个人分类管理
    :param request:
    :return:
    """
    bass_url = reverse('category', kwargs=kwargs)
    user=request.session.get('user_info')['blog__nid']
    if not user:
        return redirect('/login')
    date_count=models.Category.objects.filter(blog=user).count()
    page_obj=Pagination(request.GET.get('p'),date_count)
    from django.db.models.aggregates import Count
    date_list=models.Category.objects.filter(blog=user).annotate(c=Count('article__title')).values('title','c','nid')[page_obj.start:page_obj.end]
    # category_list = models.Category.objects.filter(blog=user)[page_obj.start:page_obj.end]
    # for i in category_list:
    #    article_sum=i.article_set.filter(blog=user).count()
    page_str = page_obj.page_str(bass_url)
    return  render(request,'backend_category.html',{'date_list':date_list,'page_str':page_str})
Exemple #30
0
def index(request, *args, **kwargs):
    """
    博客首页,展示全部博文
    :param request:
    :return:
    """
    # return render(request,'index.html')
    # 获取文章类型
    article_type_list = models.Article.type_choices
    # {},[]
    if kwargs:
        article_type_id = int(kwargs['article_type_id'])
        # 按照別名反向生成URL
        # 有參數時 all/(?P<article_type_id>\d+).html {%url 'index' article_type_id=1%} all/1.html
        # 無參數時 all/(\d+).html{%url 'index' 1%} all/1.html
        # 在 views中使用  有分組時 kwargs={article_type_id:1,}
        # 在 views中使用  無分組時 args=(1,)
        base_url = reverse('index', kwargs=kwargs)  # all/1.html
    else:
        article_type_id = None
        base_url = '/'  # /

    data_count = models.Article.objects.filter(**kwargs).count()

    page_obj = Pagination(request.GET.get('p'), data_count)
    article_list = models.Article.objects.filter(
        **kwargs).order_by('-nid')[page_obj.start:page_obj.end]
    page_str = page_obj.page_str(base_url)
    article_like_list = models.Article.objects.order_by('-up_count')[0:10]
    article_comment_list = models.Article.objects.order_by(
        '-comment_count')[0:10]
    return render(
        request,
        'index.html',
        {
            'article_list': article_list,
            'article_type_id': article_type_id,  # 文章分類id
            'article_type_list': article_type_list,  # 文章分類的文本
            'page_str': page_str,
            'article_like_list': article_like_list,
            'article_comment_list': article_comment_list,
        })