基于Django的Web端垃圾分类查询

简介

用Django实现一个Web端垃圾分类的功能。
主要流程为:在网页上有一个搜索框,输入搜索关键词,获取对应搜索数据。
这里需要用到天行数据API接口,提供数据服务。网站为:https://www.tianapi.com/,只需申请一个账号可以免费使用接口数据(有次数限制,个人使用足够)。
开发环境:Windows10,Pycharm,Python3.7,Django2.1

实现过程

相关配置

Django创建项目与app不多说,进入代码编辑主要部分:
创建完项目和app后,_test项目目录下还有一个_test文件夹,为项目配置文件夹。
在配置文件夹中找到settigs.py文件,找到INSTALLED_APPS,将创建的app加入,代码为:

'testapp.apps.TestappConfig',

urls.py编辑

在配置文件夹中找到urls.py文件,将testapp的urls加入urlpatterns中,代码为:

path('', include('testapp.urls')), 

记住需要导入include,代码如下:

from django.urls import path, include  

testapp中新建urls.py文件,代码为:

from django.urls import path
from . import views


app_name = 'testapp'

urlpatterns = [
    # main
    path('index/', views.index, name='index'),
    path('get_search/', views.get_search, name='get_search'),
]

视图编辑

编辑视图函数views.py:

import json
import urllib.request
from django.shortcuts import render

# Create your views here.


def index(request):
	return render(request, 'testapp/index.html', locals())


def get_search(request):

    word = request.GET.get('q')  # 获取搜索表单关键词,这里的q与前端form表单中的字段值name的值一样
    key = '*****'  # 天行数据账号的key为一串数字,记得替换
    word_quote = urllib.request.quote(word)  # 处理关键词为中文时的编码问题
    if word != '':
        url = "http://api.tianapi.com/txapi/lajifenlei/index?key={}&word={}".format(key, word_quote)
        try:
            r = urllib.request.Request(url=url)
            req = urllib.request.urlopen(r)
            content = req.read().decode("utf-8")  # 将获取的内容编码为utf-8
            json_response = json.loads(content)  # 将数据转化为json格式,便于处理
        except urllib.error.URLError as e:
            pass
        else:
            # 判断是否成功获取数据
            if json_response['code'] == 200 and (json_response['newslist'] is not None):
                news_list = json_response["newslist"][:10]  # 获取前十条数据
            elif json_response['code'] == 200 and (json_response['newslist'] is None):
                empty_data = '未搜索到数据!请修改关键词!'
            else:
                error = "暂时不能搜索,请稍后再试!"
    return render(request, 'testapp/search.html', locals())

PS: 第一个视图用来展示未搜索界面,第二个视图用来展示搜索结果。

前端编辑

编辑前端html文件:
在testapp下新建templates文件夹,在templates下新建index.html和search.html文件。
index.html文件:

<p>HomePage</p>
<form class="" method="get" action="{% url 'testapp:get_search' %}">
    <input type="search" class="" name="q" placeholder="Search" required>&nbsp;
    <button type="submit" class="">搜索</button>
</form>

search.html文件如下:

<body>
<a href="{% url 'testapp:index' %}">Back home</a>
<form class="" method="get" action="{% url 'testapp:get_search' %}">
    <input type="search" class="" name="q" placeholder="Search" required>&nbsp;
    <button type="submit" class="">搜索</button>
</form>
<div>
    {% if news_list %}
    {% for item in news_list %}
    <p>{{ item.name }}</p>
    <p>{{ item.explain }}</p>
    <p>{{ item.contain }}</p>
    {% endfor %}
    {% else %}
    <p>{{ empty_data }}</p>
    {% endif %}
</div>
</body>

PS:html文件未作优化处理,如CSS原生样式或者bootstrap样式。

浏览器搜索:http://127.0.0.1:8000/index/
主页图:
在这里插入图片描述
输入关键词,如:手机,搜索:
在这里插入图片描述
以上。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章