學習隨筆:Vue.js與Django交互以及Ajax和axios
阿新 • • 發佈:2019-03-15
ios 數據傳遞 學習 href 全局 cti type 求和 .sh
1. Vue.js地址
Staticfile CDN(國內):
https://cdn.staticfile.org/vue/2.2.2/vue.min.js
unpkg:會保持和npm發布的最新的版本一致
https://unpkg.com/vue/dist/vue.js
cdnjs:
https://cdnjs.cloudflare.com/ajax/libs/vue/2.1.8/vue.min.js
2. django 和vue語法沖突處理 : {{}}
2.1 方法1:
在new Vue設置: `delimiters:['[[', ']]']`, 然後在html使用 `[[ ]]` 代替 `{{}}`
2.2 方法2:
使用
`{% verbatim myblock %} {% endverbatim myblock %}`
包裹vue裏面的`{{}}`,
此標簽包裹的代碼將不會被Django的模板引擎渲染
3. Django的數據傳遞給Vue
django服務端代碼:
def vue_views(request): List = [{'age':18},200] OBJ = {"name":"隔壁老王"} dic = { 'list':json.dumps(List), 'obj':json.dumps(OBJ) } return render(request,'Vue.html',dic)
- 傳遞數據是用json傳遞過去的,否則會報錯
Vue前端代碼:
<script> var list = {{ list | safe }} var obj = {{ obj | safe }} console.log(list,obj) </script>
4. Vue的數據傳遞給Django
4.1 axios方法
4.1.1 get傳遞方式
<script src="https://unpkg.com/axios/dist/axios.min.js"></script> <script> axios.get('/newmodle?a=1&b=2') .then(function (response) { console.log(response) console.log(response.data) }) </script>
4.1.2 post傳遞方式
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script src="https://cdn.bootcss.com/qs/6.5.1/qs.min.js"></script>
<script>
function getCookie (name) {
var value = '; ' + document.cookie
var parts = value.split('; ' + name + '=')
if (parts.length === 2) return parts.pop().split(';').shift()
}
axios({
url: '/newmodle/',
method: 'post',
responseType: 'json', // 默認的
data: Qs.stringify({
'a': 1,
'b': 2,
}),
headers: {
'X-CSRFToken': this.getCookie('csrftoken')
}
})
.then(function (response) {
console.log(response)
console.log(response.data)
})
</script>
- django會在瀏覽器的cookie裏面保存一項csrftoken,當進行POST請求時會進行驗證
4.2 ajax方法
- 使用全局對象方式 Vue.http 或者在一個 Vue 實例的內部使用 this.$http來發起 HTTP 請求
Vue 要實現異步加載需要使用到 vue-resource 庫
<script src="https://cdn.staticfile.org/vue-resource/1.5.1/vue-resource.min.js"></script>
4.2.1 get傳遞方式
this.$http.get('/user/newmodle?a=1&b=2') .then(function(response){ console.log(response); console.log(response.data) }
4.2.2 post傳遞方式
<script src="/static/vue.min.js"></script> <script src="https://cdn.staticfile.org/vue-resource/1.5.1/vue-resource.min.js"></script> <script src="https://cdn.bootcss.com/qs/6.5.1/qs.min.js"></script> <script> function getCookie (name) { var value = '; ' + document.cookie var parts = value.split('; ' + name + '=') if (parts.length === 2) return parts.pop().split(';').shift() } var app = new Vue({ el : '#app', data : { text:'' }, mounted:function(){ this.$http({ url: '/newmodle', method: 'post', responseType: 'json', data: Qs.stringify({ 'a': 1, 'b': 2, }), headers: {'X-CSRFToken': getCookie('csrftoken')} }) .then(function (response) { console.log(response); console.log(response.data); }) } }) </script>
5. Ajax 與 axios
Ajax
Ajax 即“Asynchronous Javascript And XML”,是指一種創建交互式網頁應用的網頁開發技術
- Ajax = 異步 JavaScript 和 XML(標準通用標記語言的子集)
- Ajax是一種用於創建快速動態網頁的技術
- Ajax是一種在無需重新加載整個網頁的情況下,能夠更新部分網頁的技術
- 通過在後臺與服務器進行少量數據交換,Ajax 可以使網頁實現異步更新.這意味著可以在不重新加載整個網頁的情況下,對網頁的某部分進行更新
- 傳統的網頁(不使用 Ajax)如果需要更新內容,必須重載整個網頁頁面
axios:
用於瀏覽器和node.js的基於Promise的HTTP客戶端
- 從瀏覽器制作XMLHttpRequests
- 讓HTTP從node.js的請求
- 支持Promise API
- 攔截請求和響應
- 轉換請求和響應數據
- 取消請求
- 自動轉換為JSON數據
- 客戶端支持防止XSRF
學習隨筆:Vue.js與Django交互以及Ajax和axios