
正文
django 上传路径至vue处理组件加载
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
1,在主目录(项目目录)下新建中间件middleware.py文件
写入
from django.utils.deprecation import MiddlewareMixin
from django.http import HttpResponseRedirect
import json '''请求数据的页面'''
request_data_page = [
'/QQ/index/',
'/QQ/verifyLogin/',
'/QQ/login/',
'/QQ/register/',
]
class match_unnecessary_path(MiddlewareMixin):
'''路径信息'''
path_params = ''
json_params = '' def process_request(self,request):
'''
匹配多余路径,发送至vue进行处理
当存在session时,访问vue内部组件时通过django无法访问
截取访问的路径,储存之request中,通过响应发送给vue
'''
path = request.path
Session = request.session.get('username')
isRequestData = path not in request_data_page
Redirect = Session and isRequestData
'''
非请求数据的页面就重定向至主页,vue页面会向请求verifyLogin请求数据,所以重定向之主页,在vue中跳转至对应的组件页面
请求数据被重定向,会返回一个HTML二进制页面数据,所以要排除在外
'''
if Redirect :
self.path_params = request.path
# print(self.path_params, 'request-23') '''重定向至主页'''
return HttpResponseRedirect('/QQ/index') def process_response(self,request,response):
'''当有session值,请求数据时将请求的路径返回vue'''
path = request.path
print(self.path_params,'response-29')
'''当包含session时,请求的页面是其他页面,将路径上传至vue进行处理'''
if path == '/QQ/verifyLogin/' and self.path_params:
'''获取上传的数据'''
self.json_params = response.content.decode()
'''修改数据,将路径添加到数据中一起上传'''
dict_content = json.loads(self.json_params)
dict_content['request_path'] = self.path_params
json_content =(json.dumps(dict_content)).encode()
response.content = json_content return response class change_request_middle(MiddlewareMixin):
def process_request(self,request):
# pass
#陷入死循环
# if not request.session.get('username'):
'''不包含session时,访问内部组件,重定向之登录界面'''
path = request.path
noSession = not request.session.get('username')
isRequestData = path not in request_data_page
Redirect = noSession and isRequestData
'''
非请求数据的页面就重定向至主页,vue页面会向请求verifyLogin请求数据,所以重定向之主页,在vue中跳转至对应的组件页面
请求数据被重定向,会返回一个HTML二进制页面数据,所以要排除在外
'''
if Redirect:
#重定向路径,修改路径
return HttpResponseRedirect('/QQ/index')
中间件1
2,在settings.py中注册
'middleware.类名'
3,在vue中接收发送过来的数据






