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')
2,在settings.py中注册
'middleware.类名'
3,在vue中接收发送过来的数据

浙公网安备 33010602011771号