vue 如何打開(kāi)接口返回的HTML文件
前言:接口測(cè)試平臺(tái),后端使用django,前端使用vue+element。項(xiàng)目接口平臺(tái)測(cè)試完成,需要把后臺(tái)產(chǎn)生的測(cè)試報(bào)告返回給前端展示。
一、后端接口
1、配置下django的template的參數(shù),templates文件夾是放在project的目錄下面的,是項(xiàng)目中或者說(shuō)項(xiàng)目中所有的應(yīng)用公用的一些模板

TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'userfiles')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]2、視圖函數(shù),讀取template目錄下report文件夾的報(bào)告,并返回給前端

def getReport(self, request):
# 獲取POST BODY信息
reportId = request.data["id"]
try:
print(os.getcwd()) # 打印程序運(yùn)行目錄
template = loader.get_template(f"./report/{reportId}.html")
# template = loader.get_template(f"1.html")
return Response(template.render())
# return HttpResponse(template.render())
except Exception as e:
content = {'message': '獲取報(bào)告失敗'}
return Response(content)二、前端
1、如果后端返回的HTML文件不包含js文件,可以使用vue的v-html,vue的v-html只能渲染html元素和css文件,,不能執(zhí)行js文件

2、后端返回的數(shù)據(jù),HTML文件包含js文件。使用下面這種方法,接口獲取到的html數(shù)據(jù)在暫存的本地localStorage,再讀取數(shù)據(jù),然后在新窗口打開(kāi)報(bào)告。
接口返回的數(shù)據(jù)如下:

template:
<el-button type="warning" @click="viewReport" :disabled="reportDisabled
methods:
// 查看測(cè)試報(bào)告
viewReport () {
var message = {id:1}
// axios 通過(guò)接口獲取后臺(tái)的報(bào)html告文件數(shù)據(jù)
getReport(message).then(res => {
this.$message({
showClose: true,
message: res.data.message,
type: 'success'
})
// res.data 為接口返回的html完整文件代碼
// 必須要存進(jìn)localstorage,否則會(huì)報(bào)錯(cuò),顯示不完全
window.localStorage.removeItem('callbackHTML')
window.localStorage.setItem('callbackHTML', res.data)
// 讀取本地保存的html數(shù)據(jù),使用新窗口打開(kāi)
var newWin = window.open('', '_blank')
newWin.document.write(localStorage.getItem('callbackHTML'))
// 關(guān)閉輸出流
newWin.document.close()
}).catch(err => {
this.$message({
showClose: true,
message: err.response.msg,
type: 'error'
})
})
}至此結(jié)束,點(diǎn)擊下按鈕即可在新窗口展示測(cè)試報(bào)告了

到此這篇關(guān)于vue 如何打開(kāi)接口返回的HTML文件的文章就介紹到這了,更多相關(guān)vue 打開(kāi)接口返回的HTML文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決VUE-Router 同一頁(yè)面第二次進(jìn)入不刷新的問(wèn)題
這篇文章主要介紹了解決VUE-Router 同一頁(yè)面第二次進(jìn)入不刷新的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-07-07
Vuejs 實(shí)現(xiàn)簡(jiǎn)易 todoList 功能 與 組件實(shí)例代碼
本文通過(guò)實(shí)例代碼給大家介紹了Vuejs 實(shí)現(xiàn)簡(jiǎn)易 todoList 功能 與 組件,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-09-09
Vue.use與Vue.prototype的區(qū)別及說(shuō)明
這篇文章主要介紹了Vue.use與Vue.prototype的區(qū)別及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12
vue項(xiàng)目前端加前綴(包括頁(yè)面及靜態(tài)資源)的操作方法
這篇文章主要介紹了vue項(xiàng)目前端加前綴(包括頁(yè)面及靜態(tài)資源)的操作方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2023-12-12
vue中tab選項(xiàng)卡的實(shí)現(xiàn)思路
今天給大家分享vue中tab 選項(xiàng)卡的一些套路,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2018-11-11
vue框架和react框架的區(qū)別以及各自的應(yīng)用場(chǎng)景使用
這篇文章主要介紹了vue框架和react框架的區(qū)別以及各自的應(yīng)用場(chǎng)景使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10
如何實(shí)現(xiàn)vue加載指令 v-loading
在日常的開(kāi)發(fā)中,加載效果是非常常見(jiàn)的,但是怎么才能方便的使用,本文介紹如何實(shí)現(xiàn)vue加載指令 v-loading,感興趣的朋友一起看看吧2024-01-01
vue3如何使用postcss-px-to-viewport適配屏幕
這篇文章主要介紹了vue3如何使用postcss-px-to-viewport適配屏幕問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03

