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. Java的HashMap和HashTable(转)

    来源:http://www.cnblogs.com/devinzhang/archive/2012/01/13/2321481.html 1. HashMap 1)  hashmap的数据结构 Has ...

  2. 用gethub下载ardupilot的最新源码

    1进入gethub的官方网站https://github.com/作者:恒久力行 QQ:624668529    在搜索框内输入ardupilot并点击搜索点回车       2会看到很多工程,选择那 ...

  3. 提高jquery加载速率(有cdn就加载,没有就加载本地)

    <!-- Adds google cdn reference --> <script src="https://cdn.bootcss.com/jquery/3.2.1/j ...

  4. strlen()与mb_strlen()的作用分别是什么

    strlen和mb_strlen都是用于截取字符串的,其中strlen只针对单字节编码字符 如果是多字节编码字符 如gbk和utf8 使用strlen会出现乱码 此时可以使用mb_strlen(),专 ...

  5. input和textarea修改placeholder颜色和字号

    方式1因为每个浏览器的CSS选择器都有所差异,所以需要针对每个浏览器做单独的设定(可以在冒号前面写input和textarea).::-webkit-input-placeholder { /* We ...

  6. stm8 全局变量定义 声明

    1.ST Visual Develop 开发环境下.h文件里面不能定义变量,要把变量定义在.C文件里面,然后在.H文件里面声明即可.补充:今天突然发现还有一种情况,变量在一个.h文件里定义后,在另外的 ...

  7. MyBatis源码探索

    每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为中心的.SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获 ...

  8. centos6.2安装内核

    http://vault.centos.org/6.2/updates/Source/SPackages/ yum install rpm-build redhat-rpm-config unifde ...

  9. Visual Studio 2015 终于还是装上了

    win8.1系统 vs2015.preview_ult_CHT.iso 大小4.46G, http://download.microsoft.com/download/9/9/1/99133C05-3 ...

  10. HDU 2602 Bone Collector骨头收藏者(01背包)

    题意:收藏骨头. 思路: 常规的01背包. #include <iostream> #define N 1005 using namespace std; int volume[N]; / ...