基于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文件:

HomePage

 

search.html文件如下:


Back home
 
{% if news_list %} {% for item in news_list %}

{{ item.name }}

{{ item.explain }}

{{ item.contain }}

{% endfor %} {% else %}

{{ empty_data }}

{% endif %}

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

浏览器搜索:http://127.0.0.1:8000/index/
主页图:
基于Django的Web端垃圾分类查询_第1张图片
输入关键词,如:手机,搜索:
基于Django的Web端垃圾分类查询_第2张图片
以上。

你可能感兴趣的:(Python,Django)