美文网首页
vue数据请求

vue数据请求

作者: 虫yu | 来源:发表于2018-08-16 14:46 被阅读28次

1.vue.js 是库,不是框架;
2.vue.js 下载过来直接在html中引入就好了,并不一定要npm install vue;
3.vue.js 有路由的 叫vue-route.js,vue.js也有数据请求 叫vue-resource.js;
4.vue本身不支持发送AJAX请求,需要使用vue-resource(vue1.0版本)、axios(vue2.0版本)等插件实现;
5.axios是一个基于Promise的HTTP请求客户端,用来发送请求,也是vue2.0官方推荐的,同时不再对vue-resource进行更新和维护;
6.参考:GitHub上搜索axios,查看API文档;
7.发送跨域请求:axios本身并不支持发送跨域的请求,没有提供相应的API,作者也暂没计划在axios添加支持发送跨域请求,所以只能使用第三方库,也可使用使用vue-resource发送跨域请求。
在models.py中:

class Menu(models.Model):
    id = models.AutoField(primary_key=True)  # 可省略这一行
    parentid = models.IntegerField()
    name = models.CharField(max_length=12)
    url = models.CharField(max_length=128, null=True, blank=True)
    type = models.CharField(max_length=20)

    def __unicode__(self):
        return self.name

在admin.py中:

from django.contrib import admin
from TestModel.models import  Menu

class MenuAdmin(admin.ModelAdmin):
    list_display = ('id', 'parentid', 'name', 'url', 'type')  # list
    search_fields = ('name',)
    fields = ('parentid', 'name', 'url', 'type')

admin.site.register(Menu, MenuAdmin)

在项目根目录下执行:

python3 manage.py makemigrations TestModel  # 让 Django 知道我们在我们的模型有一些变更
python3 manage.py migrate TestModel   # 创建表结构

在admin管理中添加数据:

在weixin.html中:

<script src="js/vue.js"></script>
<script src="js/axios.js"></script>
<script src="js/vue-resource.js"></script>
<div id="menu">
    <a href="javascript:;" v-on:click="loadData()" ><span>加载数据</span></a>
    listData:{{listData}}
</div>
<script>
    var wxmenu = new Vue({
    el: '#menu',
    data: {
        list: [],
    },
    methods: {
        loadData:function(){
            console.log("loadData");
            axios.get('http://localhost:8000/weixin/get')
            .then(function(response){
                console.log(response);
            })
            .catch(function(err){
                console.log(err);
            });
        }
    }
});
</script>

在urls.py中:

from django.conf.urls import url
from django.contrib import admin
from . import  weixin

urlpatterns = [
    url(r'^admin', admin.site.urls),
    url(r'^weixin$', weixin.weixin),
    url(r'^weixin/get$', weixin.get),
]

在weixin.py中:

# -*- coding: utf-8 -*-

from django.http import HttpResponse
from django.shortcuts import render
from TestModel.models import Menu
 
def get(request):
    # 通过objects这个模型管理器的all()获得所有数据行,相当于SQL中的SELECT * FROM
    list = Menu.objects.all()
    print("list:", list)
    return HttpResponse(list)

打印出来的数据不是json数据:

<QuerySet [<Menu: Menu object (1)>, <Menu: Menu object (2)>, <Menu: Menu object (3)>, <Menu: Menu object (4)>, <Menu: Menu object (5)>]>

在HttpResponse上面添加:

import json
from django.core import serializers
def get(request):
    data = serializers.serialize("json", Menu.objects.all())
    print("data:", data)
    return HttpResponse(data)

打印出来的数据:

[{"model": "TestModel.menu", "pk": 1, "fields": {"parentid": 0, "name": "\u8d2d\u7269\u8f66", "url": null, "type": "click"}}, {"model": "TestModel.menu", "pk": 2, "fields": {"parentid": 0, "name": "\u5927\u724c\u5962\u54c1\u7279\u5356", "url": "http://mini.eastday.com/a/161223192744776-2.html", "type": "view"}}, {"model": "TestModel.menu", "pk": 3, "fields": {"parentid": 1, "name": "\u5546\u54c1A", "url": "http://mini.eastday.com/a/161223192744776-2.html", "type": "view"}}, {"model": "TestModel.menu", "pk": 4, "fields": {"parentid": 1, "name": "\u5546\u54c1B", "url": "http://mini.eastday.com/a/161223192744776-2.html", "type": "view"}}, {"model": "TestModel.menu", "pk": 5, "fields": {"parentid": 2, "name": "\u7279\u53561", "url": null, "type": "click"}}]

关于数据请求的参考资料:
https://segmentfault.com/q/1010000006170385/a-1020000006170658
https://www.cnblogs.com/xuanan/p/7847233.html
https://www.jianshu.com/p/df464b26ae58
https://blog.csdn.net/kuangshp128/article/details/77417652

关于json数据解析的参考资料:
https://blog.csdn.net/lanyang123456/article/details/75261105
https://blog.csdn.net/teavamc/article/details/77777301

相关文章

  • Vue的使用

    使用vue请求数据,首先添加文件引用: 请求单条数据 控制器请求方法:

  • vue发起数据请求和动画

    发起数据请求 vue挂载了this.$http属性引入vue-resource1.发起get请求 发起get请求之...

  • vue的请求数据方式

    一,vue-resource请求数据 介绍:vue-resource请求数据方式是官方提供的一个插件 步骤: 1,...

  • vue 构建单页应用5

    vue-resource 请求数据 安装 cnpm install vue-resource --save => ...

  • 再次与vue接触的填坑之路

    1. vue中引入json数据 必须创建服务才可以在vue中直接使用json数据; 可参考vue请求本地数据 下面...

  • vue中的ajax请求和axios包详解

    在vue中,经常会用到数据请求,常用的有:vue-resourse、axios 首先,引入axios get请求 ...

  • post/get请求时遇到的一些问题

    vue-axios get请求,数据是放在params中,数据会拼接在url中post请求,数据是添加到请求体b...

  • vue数据请求

    1.vue.js 是库,不是框架;2.vue.js 下载过来直接在html中引入就好了,并不一定要npm inst...

  • vue数据请求

    1.axios(建议使用) 功能特性 在浏览器中发送 XMLHttpRequests 请求 在 node.js 中...

  • Vue数据请求

    1 - 前端接口调用方式 原生ajax 基于jQuery的ajax fetch axios 2 - 接口调用-fe...

网友评论

      本文标题:vue数据请求

      本文链接:https://www.haomeiwen.com/subject/eelnbftx.html