学习随笔:Vue.js与Django交互以及Ajax和axios

1. Vue.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客户端

    1. 从浏览器制作XMLHttpRequests
    2. 让HTTP从node.js的请求
    3. 支持Promise API
    4. 拦截请求和响应
    5. 转换请求和响应数据
    6. 取消请求
    7. 自动转换为JSON数据
    8. 客户端支持防止XSRF

原文地址:https://www.cnblogs.com/wangbaby/p/10538227.html

时间: 2024-10-01 19:31:39

学习随笔:Vue.js与Django交互以及Ajax和axios的相关文章

【学习随笔】JS初涉

JS = JavaScript 他是一种轻量级别的编程语言 可插入HTML的页面代码 插入HTML页面后,可由所有的现在浏览器执行 输出语句:   document.writie(); 声明变量:     var    eg:var a; 赋值: =    eg:a = 1; Js的数据类型: 字符串 数字 布尔值 数组 对象 null undefined 字符串: var x = "Bill"; 数字:   var x = 5; 布尔值: var x = true: 数组:   va

学习随笔 原生js实现轮播

兼容性:IE7及以上,火狐和谷歌等主流浏览器 HTML&CSS 最外面1个总容器#ad,里面放1个图片容器#list,1个按钮容器#btns,2个箭头#prev和#next:#ad相对定位,其他相对于#ad绝对定位.所有图片都是绝对定位,会重叠在一起,默认z-index:0:给选中的图片和按钮分别设置class为selected和on,其中选中图片的z-index:1,才会出现在顶层.JS 手动轮播:把选中图片和按钮添加相应类名selected和on,把原来选中的按钮和图片取消相应类名.需要用循

python学习随笔1:python用户交互

1.输入使用input username = input("username:") password = input("password:") print(username,password) 2.输入打印出格式 name = input("name:") age = input("age:") job = input("job:") info ='''_____info of %s____ name:%s

转载自keepfool的Vue.js概述

概述 之前我们学习了Vue.js的一些基础知识,以及如何开发一个组件,然而那些示例的数据都是local的.在实际的应用中,几乎90%的数据是来源于服务端的,前端和服务端之间的数据交互一般是通过ajax请求来完成的. 说起ajax请求,大家第一时间会想到jQuery.除了拥有强大的DOM处理能力,jQuery提供了较丰富的ajax处理方法,它不仅支持基于XMLHttpRequest的ajax请求,也能处理跨域的JSONP请求. 之前有读者问我,Vue.js能结合其他库一起用吗?答案当然是肯定的,V

Vue.js&mdash;&mdash;基于$.ajax实现数据的跨域增删查改

概述 之前我们学习了Vue.js的一些基础知识,以及如何开发一个组件,然而那些示例的数据都是local的.在实际的应用中,几乎90%的数据是来源于服务端的,前端和服务端之间的数据交互一般是通过ajax请求来完成的. 说起ajax请求,大家第一时间会想到jQuery.除了拥有强大的DOM处理能力,jQuery提供了较丰富的ajax处理方法,它不仅支持基于XMLHttpRequest的ajax请求,也能处理跨域的JSONP请求. 之前有读者问我,Vue.js能结合其他库一起用吗?答案当然是肯定的,V

用 Vue.js 实现了一个 V2EX 克隆项目

用 Vue.js 实现了一个 V2EX 克隆项目 Demo 项目 Demo 请访问: http://v2ex.liuzhen.me/ 项目代码: https://github.com/liuzhenangel/v2ex_frontend 项目介绍 v2ex_frontend 项目是一个利用 vue.js 和 v2ex api 实现的 V2EX 社区克隆项目, 主要目的是为了学习 vue.js, 很适合学习 vue.js 的朋友参考. 这是一个前后端分离项目, 前端主要是 vue.js 和 vue

vue.js 组件-全局组件和局部组件

这两天学习了Vue.js 感觉组件这个地方知识点挺多的,而且很重要,所以,今天添加一点小笔记. 首先Vue组件的使用有3个步骤,创建组件构造器,注册组件,使用组件3个方面. 代码演示如下: <!DOCTYPE html> <html> <body> <div id="app"> <!-- 3. #app是Vue实例挂载的元素,应该在挂载元素范围内使用组件--> <my-component></my-compo

Vue.js—组件快速入门以及Vue路由实例应用

上次我们学习了Vue.js的基础,并且通过综合的小实例进一步的熟悉了Vue.js的基础应用.今天我们就继续讲讲Vue.js的组件,更加深入的了解Vue,js的使用.首先我们先了解一下什么是Vue.js的组件,组件其实就是页面组成的一部分,它是一个具有独立的逻辑和功能或页面,组件可以扩展 HTML 元素,封装可重用的代码.组件系统让我们可以用独立可复用的小组件来构建大型应用,几乎任意类型的应用的界面都可以抽象为一个组件树,如下图: 接下来我们就仔细讲讲组件的使用吧. 1 全局组件 以下就是我们注册

VUE.JS实现购物车功能

购物车是电商必备的功能,可以让用户一次性购买多个商品,常见的购物车实现方式有如下几种: 1. 用户更新购物车里的商品后,页面自动刷新. 2. 使用局部刷新功能,服务器端返回整个购物车的页面html 3. 服务器端返回JSON格式,使用模板引擎+dom操作更新页面 最近新学习了vue.js,一个轻量级的mvvm(Model-View-ViewModel),vue.js是数据驱动无须操作dom,它提供特殊的html语言,把dom和数据绑定在一起,一旦修改了数据,dom将会自动更新更新. 关于vue.