1.什么是API?

2.在djang里面写API

    

    

    

    

3.API实战效果

    

  1.移动端的网页

    

4.restframework :老师方法

  (0)安装

Django REST framework 是一个强大且灵活的工具包,用以构建Web APIs。

pip install djangorestframework
pip install markdown
pip install django-filter

    

  (1)model--->字典

  构造序列化器  model---> 字典

  

from website.models import Video
from rest_framework import serializers # 序列化器
from rest_framework.response import Response # 构建json
from rest_framework.decorators import api_view class VideoSerializer(serializers.ModelSerializer):
"""构造序列化器"""
class Meta:
model = Video
fields = '__all__'
# fields = ('title','context',)

  (2)字典--->json

    编写一个视图.

  返回json的视图

from website.models import Video
from rest_framework import serializers # 序列化器
from rest_framework.response import Response # 构建json
from rest_framework.decorators import api_view class VideoSerializer(serializers.ModelSerializer):
"""构造序列化器"""
class Meta:
model = Video
fields = '__all__'
# fields = ('title','context',) @api_view(['GET'])
def video_list(request):
"""返回json的视图"""
video_list = Video.objects.all()
serializers = VideoSerializer(video_list, many=True)
return Response(serializers.data)

  分配url

from django.conf.urls import url, include
from django.contrib import admin
from django.conf import settings
from django.conf.urls.static import static
from website.views import listing,detail_login, detail_register, detail,detail_voter_post
from django.contrib.auth.views import logout from website.api import video_list urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^listing/$', listing, name='listing'),
url(r'^listing/(?P<cate>[A-Za-z]+)$', listing, name='listing'), # cate变量
url(r'^login/$', detail_login, name='detail_login'),
url(r'^register/$', detail_register, name='detail_register'),
url(r'^logout/$', logout, {'next_page':'/listing'}, name='logout'),
url(r'^detail/(?P<page_num>\d+)$', detail, name='detail'),
url(r'^detail/vote/(?P<page_num>\d+)$', detail_voter_post, name='detail_voter_post'), url(r'^api/video', video_list),
]

    

    

    (3)出现的解决不了的debug

    

5.博客方法

http://www.cnblogs.com/venicid/p/8228220.html#_label2

    

      

6.移动端

  1. V层

#tenmins\website\mobile_view.py

from django.shortcuts import render

def mobile_video_list(request):
return render(request,'mobile_list.html',{})

    url

...
from website.api import video_list
from website.mobile_view import mobile_video_list urlpatterns = [
...
... url(r'^api/video', video_list),
url(r'^m/video', mobile_video_list), ]

  2. T层

   2.1标签之间 django不负责渲染页面

  

    {% verbatim %}

    {% endverbatim %}

    2.2 渲染

    2.3 script

        <script>
vm = new Vue({
el:"#app",
data:{
showMenu:false,
chozen:'all',
vids:[]
},
methods:{
getData:function () {
var self = this;
reqwest({
url:'http://127.0.0.1:8000/api/video/',
// 这里请换成自己的端口,一般是8000
type:'json',
success:function (resp) {
self.vids = resp
}, })
}
},
computed:{
filtered:function () {
var self = this
if (self.chozen == 'editors_choice') {
var newList =self.vids.filter(function (vid) {
return vid.editors_choice == true
})
return newList
} else {
return self.vids
} }
},
transitions:{
menu:{
enterClass:'bounceInDown',
leaveClass:'bounceOutUp'
}
}, ready:function () {
this.getData()
}
})
</script>

    T层代码

<!DOCTYPE html>
{% load staticfiles %} <html> <head>
<meta charset="utf-8">
<title></title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/semantic-ui/2.2.6/semantic.css" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.97.8/css/materialize.css" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/3.5.2/animate.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/1.0.28/vue.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/reqwest/2.0.5/reqwest.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/js-cookie/2.1.3/js.cookie.js"></script>
<style media="screen">
.ui.fluid.card {
margin: 5px ;
border-radius:none;
box-shadow: none
} #button {
z-index: ;
position: fixed;left:%;top:%;
}
.ui.fixed.something.menu {
position: fixed;top:50px;
}
</style> </head> {% verbatim %} <body id="app">
<div v-show="showMenu" transition="menu" class="ui animated fixed fluid vertical something menu " >
<a v-on:click="chozen = 'all'" class="item">All</a>
<a class="item">Popular</a>
<a v-on:click="chozen = 'editors_choice' " class="item">Editor</a>
</div> <div class="ui fixed inverted red borderless menu">
<div v-on:click="showMenu = !showMenu" class="header item">
<i class="icon tiny ellipsis vertical"></i>
10MINs
</div> <div class="right menu">
<div class="item">
<button class="ui tiny inverted circular button" type="button" name="">Login</button>
</div>
</div>
</div> <!-- v-if="!opps" -->
<div class="ui cards" > <div v-for="vid in filtered" class="ui fluid card" >
<div class="content">
<h4 class="header"> {{ vid.title }} </h4>
<div class="left floated meta">{{ vid.content|limitBy }}</div>
</div>
<div class="image">
<img :src="vid.url_image" style="height:200px;object-fit: cover;">
</div>
<div class="extra content">
<span class="right floated">
<i class="heart outline like icon"></i> </span>
<i class="comment outline icon"></i>
</div> <div class="ui divider"></div>
</div> </div> <button id="button" class="btn-floating btn-large red" type="button" name="button">
<i class="icon small pencil"></i>
</button> <script>
vm = new Vue({
el:"#app",
data:{
showMenu:false,
chozen:'all',
vids:[]
},
methods:{
getData:function () {
var self = this;
reqwest({
url:'http://127.0.0.1:8000/api/video/',
// 这里请换成自己的端口,一般是8000
type:'json',
success:function (resp) {
self.vids = resp
}, })
}
},
computed:{
filtered:function () {
var self = this
if (self.chozen == 'editors_choice') {
var newList =self.vids.filter(function (vid) {
return vid.editors_choice == true
})
return newList
} else {
return self.vids
} }
},
transitions:{
menu:{
enterClass:'bounceInDown',
leaveClass:'bounceOutUp'
}
}, ready:function () {
this.getData()
}
})
</script>
</body>
{% endverbatim %} </html>

  3 效果

  4. 数据的来源

  

  

  5. 数据不需要后台加载了,

  

    

8 django 里面的API的更多相关文章

  1. easyui里面的API=====》 load

    在easyui里面有个API load,这个API实用性质很强,可以直接帮我加载页面的数据到想需要的相应输入框里面,但是也要注意,这些将要被填入数据的输入框里面的属性有个要求:其中输入框里面的name ...

  2. Django里面的RequestContext

    c = RequestContext(request, { 'foo': 'bar', }) get_template('about.html').render(c) 当我们定义一个RequestCo ...

  3. Django编写RESTful API(四):认证和权限

    欢迎访问我的个人网站:www.comingnext.cn 前言: 按照前面几篇文章里那样做,使用Django编写RESTful API的基本功能已经像模像样了.我们可以通过不同的URL访问到不同的资源 ...

  4. Django编写RESTful API(五):添加超链接提高模型间的关联性

    前言 在第四篇中,加入了用户模型,以及相关的认证和权限的功能.但是我们在使用的时候,会发现在访问http://127.0.0.1:8000/users/时看到的用户列表,不能够直接点击某个链接然后查看 ...

  5. Django编写RESTful API(六):ViewSets和Routers

    欢迎访问我的个人网站:www.comingnext.cn 前言 在本系列的文章中,我在第一篇和第二篇文章中写的编写Django视图时,使用的都是基于函数的方法,并且每个视图函数之前都会加一个djang ...

  6. Django REST Framework API Guide 07

    本节大纲 1.Permissions 2.Throttling Permissions 权限是用来授权或者拒绝用户访问API的不同部分的不同的类的.基础的权限划分 1.IsAuthenticated ...

  7. Django REST Framework API Guide 04

    本节大纲 1.serializers 1.Serializers Serializers允许复杂的数据,像queryset和模型实例转换成源生的Python数据类型.从而可以更简单的被渲染成JSON, ...

  8. Django REST Framework API Guide 02

    本节大纲 1.Generic Views 2.ViewSets  1.Generic Views CBV的主要的一个优点就是极大的允许了对于代码的从用.自然,rest framework取其优势,提供 ...

  9. lhgdialog: iframe页面里面的,确定,关闭、取消按钮的操作

    lhgdialog: iframe页面里面的,确定,关闭.取消按钮的操作 如果你正在用lhgdialog,用他人iframe,或者 content:'url:http://www.baidu.com/ ...

随机推荐

  1. 如何进行大规模在线数据迁移(来自Stripe公司的经验)

    首发于笔者的微信公众号:技术心流FollowFlows 原文地址:Stripe Engineering Blog   各工程团队常面临一项共同挑战:重新设计数据模型以支持清晰准确的抽象和更复杂的功能. ...

  2. windows系统下同时启动三台Tomcat服务的配置&并设置开机启动服务

    1.tomcat 7.0.82下载地址:链接:https://pan.baidu.com/s/1i51pAgl 密码:mxol 2.解压apache-tomcat-7.0.82-windows-x64 ...

  3. HTTP响应报文与工作原理详解(转)

    超文本传输协议(Hypertext Transfer Protocol,简称HTTP)是应用层协议.HTTP 是一种请求/响应式的协议,即一个客户端与服务器建立连接后,向服务器发送一个请求;服务器接到 ...

  4. Filter过滤器,xml配置与页面不乱码整理

    1.xml配置 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi=" ...

  5. slfj4 + logback

    slf4j:(Simple Logging Facade for Java,简单日志门面),它不是具体的日志解决方案,只服务于各种各样的日志系统.在使用SLF4J的时候,不需要再代码中或配置文件中指定 ...

  6. aar、jar、so的引入和aar打包包含so、aar、jar文件

    so依赖   1,先建本地仓库,指向so放置的目录

  7. 使用NIO快速复制Java文件

    package com.test.test; import java.io.File;import java.io.FileInputStream;import java.io.FileOutputS ...

  8. tomcat jvm参数优化

    根据gc(垃圾回收器)的选择,进行参数优化 JVM给了三种选择:串行收集器.并行收集器.并发收集器,但是串行收集器只适用于小数据量的情况,所以这里的选择主要针对并行收集器和并发收集器. -XX:+Us ...

  9. LeetCode Implement strStr() 实现strstr()

    如题 思路:暴力就行了.1ms的暴力!!!别的牛人写出来的,我学而抄之~ int strStr(char* haystack, char* needle) { ; ; ; ++i) { ; ; ++j ...

  10. 使用SAP云平台的destination消费Internet上的OData service

    通过SAP云平台上的destination我们可以消费Internet上的OData service或者其他通过HTTP方式暴露出来的服务. 创建一个新的destination: 维护如下属性: 点击 ...