前后端的合并
由于本项目的前端是网页版,所以我们需要将后端与前端合并起来,前端负责向后端发送请求、传入参数,后端处理请求,然后返回数据给前端。
前端使用的是vue,利用django进行配置,其中最重要的就是django的路由配置,它的作用就是依次匹配前端的请求路径,并调用相对应的方法。
urlpatterns = [
path('admin/', admin.site.urls),
]
它一般存储在urls.py文件中。
配置好路径之后,还需要把每一个项目中需要用到的外部调用方法改为接受请求并返回http类型的数据给前端。
1.方法参数是request,具体的传入参数由request.GET(POST).get()方法获取。
2.返回的数据改为JsonResponse类型。
return JsonResponse(response)
3.在方法前添加一行:
@require_http_methods(["GET"])
由此修改每个外部调用方法:
@require_http_methods(["GET"])
def getTicketInfo(request):
'''
外部调用
:param keyword:
:param city:
:return:
'''
keyword = request.POST.get('keyword')
city = request.POST.get('city')
global spotsInfo, city_keywords
result = process.extractBests(city+keyword, city_keywords, score_cutoff=99, limit=1)
# print(keyword,city)
# print(result)
if len(result) == 0:
searchSpots(keyword, city)
response = {'data':spotsInfo[len(spotsInfo)-1]}
return JsonResponse(response)
else:
index = city_keywords.index(result[0][0])
response = {'data': spotsInfo[index]}
return JsonResponse(response)
@require_http_methods(["GET"])
def getYouhuiInfo(request):
'''
获取优惠信息
:param request:
:return:
'''
keyword = request.POST.get('keyword')
city = request.POST.get('city')
mt = DazhongSpider()
b = mt.search_discount(keyword, city)
response = {'data': b}
return JsonResponse(response)
其他方法与上面的修改类似。
加入带有前端的总项目中,进行测试,可以成功运行。