美文网首页
json数据和ajax和中间件

json数据和ajax和中间件

作者: zxhChex | 来源:发表于2019-09-27 11:16 被阅读0次

返回json数据有两种方式

1.model_name.objects.values()
2.serializers.serialize()

urls.py中
path('user-json1/',views.ApiView.as_view(),name="user1json"),
path('user-json2/',views.SerialazerView.as_view(),name="user2json"),

views.py中
from django.views import View
from django.http import JsonResponse,HttpResponse

class ApiView(View):
def get(self, request):
users = Server.objects.values()
return JsonResponse(list(users), safe=False)

from django.core import serializers

class SerialazerView(View):
def get(self,request):
users = UsersProfile.objects.all()
data = serializers.serialize('json',users)
return HttpResponse(data)

ajax请求 两种方法可以实现

在urls.py文件中

from django.views.generic import TemplateView #可以直接跳转网页

path('server-jQuery/',TemplateView.as_view(template_name="api/jQuery.html"),name="jQuer"),
path('server-axios/',TemplateView.as_view(template_name="api/vue-axios.html"),name="VueAxiox"),

1.jQuery方法

jQuery.html中

{% extends "base.html" %}
{% block content %}
<button id="btn" class="btn btn-success">获取数据</button>
<h1 id="title"></h1>
<table class="table table-bordered table-hover">
<thead>
<tr>
<th>#</th>
<th>id</th>
<th>主机名</th>
<th>内核</th>
<th>操作系统</th>
</tr>
</thead>
<tbody id="body" >
</tbody>
</table>
{% endblock %}
{% block script %}
<script>
(function(){ let title_tg =("#title")
var tr_tg = ("#body")("#btn").on('click',function(){
console.log("===>")
.ajax({ url: '{% url "api:user1json" %}', type: 'GET', dataType: 'json', success: function(res){ // 请求成功后返回的数据在 res 中 // console.log("oyzx", res[0]["host_name"]) str_tag = `<div>{res[0].host_name}</div>title_tg.html(str_tag) // tags = '' n=0 for (let i of res){ n += 1 // tags =tags +<tr>
// <th scope="row">{n}</th> // <td>{i.id}</td>
// <td>{i.host_name}</td> // <td>{i.kernel}</td>
// <td>{i.os_name}</td> // </tr>` tr_tg.append(`<tr> <th scope="row">{n}</th>
<td>{i.id}</td> <td>{i.host_name}</td>
<td>{i.kernel}</td> <td>{i.os_name}</td>
</tr>`)
}
// tr_tg.html(tags)
}
});
})
})
</script>
{% endblock %}

2.js的axios用Vue方法

{% verbatim %} {% endverbatim %}
目的是让在其中的代码的变量不被django所使用,交给vue来使用

vue-axios.html中

{% extends "base.html" %}
{% block content %}
<div id="app">
{% verbatim %}
<button id="btn" class="btn btn-success">获取数据</button>
<h1>Vue出现 {{ msg }}</h1>
<table class="table table-bordered table-hover">
<thead>

        <tr>
        <th>id</th>
        <th>主机名</th>
        <th>内核</th>
        <th>操作系统</th>
        </tr>
    </thead>
    <tbody id="body" >
        <tr v-for="item in servers" :key="">
            <td>{{ item.id }}</td>
            <td>{{ item.host_name }}</td>
            <td>{{ item.kernel }}</td>
            <td>{{ item.os_name }}</td>
        </tr>
    </tbody>

</table>
{% endverbatim %}
</div>
{% endblock %}
{% block script %}
<script>
var app =new Vue({
el: "#app",
data: {
msg: '服务器信息',
servers: ''
},
mounted() {
axios.get("{% url 'api:user1json' %}",).then(
res => {
this.servers = res.data;
});
},
})
</script>
{% endblock %}

中间件

settings.py
'MyMiddleware.test_middleware.RejectIpMiddleware',

项目根目录

from django.shortcuts import HttpResponse
class RejectIpMiddleware:
def init(self, get_response):
self.get_response = get_response

def __call__(self, request):
    remote_ip = request.META['REMOTE_ADDR']
    print(f"接收到请求后 --> 我在这里呀{remote_ip}--》调用视图前")
    # return HttpResponse(f"{request.META['REMOTE_ADDR']}")
    response = self.get_response(request)
    print("调用视图后--》我在这里呀--》返回页面前")
    return response

相关文章

  • json数据和ajax和中间件

    返回json数据有两种方式 1.model_name.objects.values()2.serializers....

  • 【前端统计图】echarts实现单条折线图

    五分钟上手: 和json数据结合: 如图所示: 实现代码: 数据:data1.json文件 ajax数据交互: 文...

  • SpringMVC传递JSON数据的推荐方式

    1. 端传递和接受json数据 1.1 使用Ajax默认格式来传递数据【推荐】 Ajax的默认格式为:applic...

  • AJAX基础

    ### AJAX是什么 AJAX =异步JavaScript和XML(json)。通过在后台与服务器进行少量数据交...

  • 2018-09-08

    关于Json数据练习的报错 刚刚联系Json和Ajax进行传输数据练习的时候出现了如下报错信息 The metho...

  • 学会开发灵活的网页(Javascript)

    3.7、使用 JSON 和 AJAX传递api数据(使用vue和reqwest实现用其它网站获取数据并传入本网站(...

  • web前端面试点整理(持续更新)

    Ajax Ajax:是对现有技术的综合利用(xhtml+css;dom动态的显示和交互;xml和json进行数据交...

  • Ajax请求跨域问题

    遇到ajax请求跨域问题,解决方式,改dataType为jsonp json和jsonp返回数据格式json格式 ...

  • XDH_LESSON13

    论坛盖楼回复样式 MongoDB数据库,json格式数据。通过AJAX实现获取和添加数据。 发表评论

  • axious

    axios: vue ajax 前端页面和后台数据进行交互 json vue 库

网友评论

      本文标题:json数据和ajax和中间件

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