django使用rest_framework

  1. 在项目的setting.py文件中 “INSTALLED_APPS“加入 ‘rest_framework‘
  2. INSTALLED_APPS = (
        ‘django.contrib.admin‘,
        ‘django.contrib.auth‘,
        ‘django.contrib.contenttypes‘,
        ‘django.contrib.sessions‘,
        ‘django.contrib.messages‘,
        ‘django.contrib.staticfiles‘,
        ‘rest_framework‘,
        ‘app01‘,
    )

    其中,app01是我创建的一个app

3.在项目的urls.py文件中加入

from django.conf.urls import url, include
from django.contrib.auth.models import User
from rest_framework import routers, serializers, viewsets

class UserSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = User
        fields = (‘url‘, ‘username‘, ‘email‘, ‘is_staff‘)

class UserViewSet(viewsets.ModelViewSet):
    queryset = User.objects.all()
    serializer_class = UserSerializer

router = routers.DefaultRouter()
router.register(r‘users‘, UserViewSet)

urlpatterns = [
    url(r‘^‘, include(router.urls)),
   
]

这样就可以在首页匹配到rest-framework的api了

4.自己定义一个blog的api

在app01的models.py文件中创建Blog类:

from django.db import models

# Create your models here.
class Blog(models.Model):
    
    title = models.CharField(max_length = 50 )
    content = models.TextField()

很简单的一个blog类,只有title和content  2个字段

app01下的api.py文件:

from django.contrib.auth.models import User
from rest_framework import routers, serializers, viewsets
from app01 import models
from rest_framework import response

class UserSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = User
        fields = (‘url‘,‘username‘,‘email‘,‘is_staff‘)
        

class UserViewSet(viewsets.ModelViewSet):
    queryset = User.objects.all()
    serializer_class = UserSerializer
    
class BlogSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = models.Blog
        depth = 1 
        fields = (‘url‘,‘title‘,‘content‘,)
        
class BlogViewSet(viewsets.ModelViewSet):
    queryset = models.Blog.objects.all()
    serializer_class = BlogSerializer

api.py文件使用了rest-framework将User类和Blog类提供了api接口


修改urls.py文件,让user和blog2个资源可以api调用:

from django.conf.urls import include, url
from django.contrib import admin
from rest_framework import routers
from app01 import api
from app01 import views

router = routers.DefaultRouter()
router.register(r‘users‘, api.UserViewSet)
router.register(r‘blogs‘, api.BlogViewSet) 

urlpatterns = [
    url(r‘^admin/‘, include(admin.site.urls)),
       url(r‘^‘,include(router.urls)),
]

5.一开始blog为空,先开启django的后台管理

在app01下的models.py文件中加入:

from django.contrib import admin

# Register your models here.

from .models import Blog

admin.site.register(Blog)

这样就可以用后台管理Blog了,当然,还得创建一个管理员账号密码,在项目的目录下执行:

python manage.py createsuperuser

输入要创建的账号密码即可

6.启动django程序,输入

http://127.0.0.1:8000/admin

直接到后台管理blog

没有数据,然后添加数据

添加了2条记录

上面是数据库的blog表

7.使用api查看blog数据

由于在urls.py中

 url(r‘^‘,include(router.urls)),

这一句直接让rest framework处理所有的url,所以首页就可以看到我们在api.py中定义的user和

直接点链接blogs的,

在django中我们没有创建对数据库的查询操作和页面返回,但是调用rest framework标准的api接口我们就可以直接从数据库中查询到数据,增删改查都是可以的!实现起来如此简单!

时间: 02-25

django使用rest_framework的相关文章

Django rest_framework 实用技巧

前言: 最近工作中需要用到Django rest_framework框架做API, 边学边写,记录了一些实际工作中需要用到的功能,不是很全也不系统,以后需要什么功能可以在这查询. 后续还会更新其它的用法 1 #################################################################### 2 ########安装和简单使用 3 ###### 准备工作 4 pip install rest_framework # 安装 5 6 INSTALL

django rest_framework

环境 django 1.6,rest_framework 3.3 ubuntu采用pip安装的rest_framework 按照例子一步步做下来 运行 提示filters.py第119行有错误forms.UUField找不到,查找了下好像上下问并没有使用UUIDFilter这个,注释掉 这个时候错误变成了No module named http_client 没道理一安装有这么多错误,Bing之发现有人说是版本不匹配,从服务起down了一个2.4.x下来setup了 错误变成了'module'

django rest_framework中将json输出字符强制为utf-8编码

最近在和日本外包合作开发JIRA对接发布系统的版本单时, 遇到这个问题. 就是我们这边的输出浏览器显示为中文,而到了JIRA端就出现乱码. 查了文档,原来django rest_framework的默认json是没指定编码的, 需要随接收方的环境编码来显示. 于是,因为项目进度,我们对了强制编码操作. 查看rest framework的源代码: class JSONRenderer(BaseRenderer): """ Renderer which serializes to

django rest_framework--入门教程3

rest_framwork 之post 与put rest_framwork可以接受post与put delete get请求,可以对资源进行刚CRUD,以一个DEMO为例, 1.先在VIEW里定义一个方法 @api_view(['GET', 'PUT', 'DELETE']) def book_detail(request,pk): """ Retrieve, update or delete a book instance. """ try:

django rest_framework--入门教程

题设.如果官网DEMO能够正常跑起来请继续,如果不能请参考上一篇 1.新建MODEL 在数据库里添加相应的数据,可以使用命令 manage.py syncdb 这时候会建立对应的表 2.新建序列化方法 如下代码: class BookSerializer(serializers.ModelSerializer): class Meta: model = Book field = ('title','author') 这里为什么是ModelSerializer,大家可以参考http://www.d

利用 Django REST framework 编写 RESTful API

利用 Django REST framework 编写 RESTful API Updateat 2015/12/3: 增加 filter 最近在玩 Django,不得不说 rest_framework 真乃一大神器,可以轻易的甚至自动化的搞定很多事情,比如: 自动生成符合 RESTful 规范的 API 支持 OPTION.HEAD.POST.GET.PATCH.PUT.DELETE 根据 Content-Type 来动态的返回数据类型(如 text.json) 生成 browserable

Django REST框架 -1

项目设置 创建一个名为Django的新项目tutorial,然后启动一个新的应用程序quickstart. # Create the project directorymkdir tutorialcd tutorial # Create a virtualenv to isolate our package dependencies locally virtualenv envsource env/bin/activate # On Windows use `env\Scripts\activa

Django学习系列之django restframework

曾几何时,Ajax已经统治了Web开发中的客户端,而REST成为web世界中最流行的架构风格(architecture style).所以我们的选择变得很简单:前端ajax访问后端的RESTful API对资源进行操作Django中有一些可选的REST framework,比如django-piston,django-tasypie. 但是我和google(呵呵,不好意思)推荐这个:Django REST framework django-framework就是定义一个url,可以利用这个url

RESTFull 的 Django

最近为了升级曾经用Django做的网站,决定升级修改下架构,而且在当今Rest风格API的架构正在一步步的渗透到各个公司的API设计中,那Django这个框架呢?当然也会例外. 现在现在以相对比较好用的rest framework做个demo: 环境:ubuntu, mysql, python, django, django-rest-framework 安装django (env)[email protected]:/usr/local$pip install django Downloadi