django 上传路径至vue处理组件加载

1,在主目录(项目目录)下新建中间件middleware.py文件

  写入

 1 from django.utils.deprecation import MiddlewareMixin
 2 from django.http import HttpResponseRedirect
 3 import json
 4 
 5 '''请求数据的页面'''
 6 request_data_page = [
 7     '/QQ/index/',
 8     '/QQ/verifyLogin/',
 9     '/QQ/login/',
10     '/QQ/register/',
11 ]
12 class match_unnecessary_path(MiddlewareMixin):
13         '''路径信息'''
14         path_params = ''
15         json_params = ''
16 
17         def process_request(self,request):
18             '''
19                 匹配多余路径,发送至vue进行处理
20                 当存在session时,访问vue内部组件时通过django无法访问
21                 截取访问的路径,储存之request中,通过响应发送给vue
22             '''
23             path = request.path
24             Session =  request.session.get('username')
25             isRequestData = path not in request_data_page
26             Redirect = Session and isRequestData
27             '''
28             非请求数据的页面就重定向至主页,vue页面会向请求verifyLogin请求数据,所以重定向之主页,在vue中跳转至对应的组件页面
29             请求数据被重定向,会返回一个HTML二进制页面数据,所以要排除在外
30             '''
31             if  Redirect :
32                 self.path_params = request.path
33                 # print(self.path_params, 'request-23')
34 
35                 '''重定向至主页'''
36                 return HttpResponseRedirect('/QQ/index')
37 
38         def process_response(self,request,response):
39             '''当有session值,请求数据时将请求的路径返回vue'''
40             path = request.path
41             print(self.path_params,'response-29')
42             '''当包含session时,请求的页面是其他页面,将路径上传至vue进行处理'''
43             if path == '/QQ/verifyLogin/' and self.path_params:
44                 '''获取上传的数据'''
45                 self.json_params = response.content.decode()
46                 '''修改数据,将路径添加到数据中一起上传'''
47                 dict_content = json.loads(self.json_params)
48                 dict_content['request_path'] = self.path_params
49                 json_content =(json.dumps(dict_content)).encode()
50                 response.content = json_content
51 
52             return response
53 
54 class change_request_middle(MiddlewareMixin):
55     def process_request(self,request):
56         # pass
57         #陷入死循环
58         # if not request.session.get('username'):
59         '''不包含session时,访问内部组件,重定向之登录界面'''
60         path = request.path
61         noSession = not request.session.get('username')
62         isRequestData = path not in request_data_page
63         Redirect = noSession and isRequestData
64         '''
65         非请求数据的页面就重定向至主页,vue页面会向请求verifyLogin请求数据,所以重定向之主页,在vue中跳转至对应的组件页面
66         请求数据被重定向,会返回一个HTML二进制页面数据,所以要排除在外
67         '''
68         if Redirect:
69             #重定向路径,修改路径
70             return HttpResponseRedirect('/QQ/index')
中间件1

2,在settings.py中注册

  'middleware.类名'

3,在vue中接收发送过来的数据

posted @ 2019-11-10 16:04  mpython  阅读(275)  评论(0)    收藏  举报