Django前后端分离开发-新闻管理系统(六)

项目源码下载:https://github.com/Cherish-sun/NEWS/tree/master

一、新闻搜索功能

# 搜索
def search(request):
    strquery = request.GET.get('query')
    page = int(request.GET.get('page', 1))
    data = {
        "search": strquery,
        "page": page,
        "ordering": '-id',
    }
    article_data = getdata(articles_url, data)
    article_list = article_data["results"]
    # 总记录数
    count = article_data["count"]
    # 下一页
    next = article_data["next"]
    nextpage = page + 1
    # 上一页
    previous = article_data["previous"]
    previouspage = page - 1
    # 总页数
    num_pages = int(count / PAGESIZE)
    curr_url = request.get_full_path()
    nPos = curr_url.find('&page')
    if nPos > 0:
        curr_url = request.get_full_path()[0:nPos]
    else:
       curr_url = request.get_full_path()

    return render(request, 'searchlist.html', locals())

根据传入的字符串查询,并对查询结果分页传给searchlist.html

{% extends 'base.html' %}

{% load staticfiles %}
{% block left_content %}
    
{% include 'page.html' %} {% endblock %}

page.html

 {% if num_pages > 1 %}
     
{% if previous %} 上一页 {% endif %} Page {{ page }} of {{ num_pages }}. {% if next %} 下一页 {% endif %}
{% endif %}

二、文章详情页

# 文章详情页
def article(request):
    id = request.GET.get('id')
    articles_url = 'http://127.0.0.1:8005/articleList/'
    # 构造url http://127.0.0.1:8000/article/id/
    articles_url = urljoin(articles_url, id)
    article = getdata(articles_url)
    return render(request, 'article.html', locals())

article.html

{% extends 'base.html' %}
{% load staticfiles %}

{% block left_content %}
   

{{ article.title }}

{{ article.content| safe }}

{% for tag in article.tags %} {% endfor %}
{% endblock %}

三、按标签查询对应的文章列表

def tag(request):
    tagid = request.GET.get('tagid')
    page = int(request.GET.get('page', 1))
    data = {
        "tags": tagid,
        "page": page,
        "ordering": '-id',
    }
    article_data = getdata(articles_url, data)
    article_list = article_data["results"]
    # 总记录数
    count = article_data["count"]
    # 下一页
    next = article_data["next"]
    nextpage = page + 1
    # 上一页
    previous = article_data["previous"]
    previouspage = page - 1
    # 总页数
    num_pages = int(count / PAGESIZE)
    curr_url = request.get_full_path()
    nPos = curr_url.find('&page')
    if nPos > 0:
        curr_url = request.get_full_path()[0:nPos]
    else:
        curr_url = request.get_full_path()
    return render(request, 'tag.html', locals())

tag.html

{% extends 'base.html' %}
{% load staticfiles %}
{% block left_content %}
     

标签{{ request.GET.tag }}

{% for article in article_list %}
{% endfor %}
{% endblock %}

四、分类页

def category(request):
    categoryid = request.GET.get('cid')
    print(categoryid)
    currcategoryid = request.GET.get('cid')
    print(currcategoryid)
    page = int(request.GET.get('page', 1))
    # 取二级栏目
    data = {
    "categorys": categoryid,
    }
    ul = "http://127.0.0.1:8005/categoryitems/"
    print(ul)
    print(data)
    items_list = getdata(ul, data)
    print(99, items_list)
    # for i in items_li:
    #     items_list = (i["items"])
    # 取新闻
    data = {
        "item__categorys": categoryid,
        "page": page,
        "ordering": '-id',
    }
    article_data = getdata(articles_url, data)

    article_list = article_data["results"]

    # 总记录数
    count = article_data["count"]
    # 下一页
    next = article_data["next"]
    nextpage = page + 1
    # 上一页
    previous = article_data["previous"]
    previouspage = page - 1
    # 总页数
    num_pages = int(count / PAGESIZE)
    curr_url = request.get_full_path()
    nPos = curr_url.find('&page')
    if nPos > 0:
        curr_url = request.get_full_path()[0:nPos]
    else:
        curr_url = request.get_full_path()
    return render(request, 'category.html', locals())

五、根据二级栏目类型取新闻列表

def item(request):
    categoryid = request.GET.get('cid')
    itemid = request.GET.get('itemid')
    page = int(request.GET.get('page', 1))
    # 取二级栏目
    data = {
        "categorys": categoryid,
    }
    items_data = getdata(items_url, data)
    items_list = items_data
    # 取新闻
    data = {
        "item": itemid,
        "page": page,
        "ordering": '-id',
    }
    article_data = getdata(articles_url, data)
    article_list = article_data["results"]

    # 总记录数
    count = article_data["count"]
    # 下一页
    next = article_data["next"]
    nextpage = page + 1
    # 上一页
    previous = article_data["previous"]
    previouspage = page - 1
    # 总页数
    num_pages = int(count / PAGESIZE)
    curr_url = request.get_full_path()
    nPos = curr_url.find('&page')
    if nPos > 0:
        curr_url = request.get_full_path()[0:nPos]
    else:
        curr_url = request.get_full_path()
    return render(request, 'category.html', locals())

category.html

{% extends 'base.html' %}
{% load staticfiles %}
{% block left_content %}
    {% if  items_list %}
        
{% for item in items_list %}
  • {{ item.title }}   
  • {% endfor %}
    {% endif %}
    {% include 'page.html' %}
    {% endblock %}

    最后添加urls.py文件中添加路径

    path('item/', item, name='item'),
    path('tag/', tag, name='tag'),
    

    你可能感兴趣的:(Django前后端分离开发-新闻管理系统(六))