Django-Rest-Framework 教程: 快速入门

1. 设置

我们创建django项目tutorial, 和app quickstart:

    # 创建新Django项目
    django-admin.py startproject tutorial
    cd tutorial

    # 使用virtualenvwrapper创建Virtualenv
    mkvirtualenv env
    workon env

    # 在env中安装Django 和 Django REST framework
    pip install django
    pip install djangorestframework

    # 创建新app
    python manage.py startapp quickstart

然后根据自己的数据库配置设置数据库:

    # tutorial/settings.py
    DATABASES = {
        ‘default‘: {
            ‘ENGINE‘: ‘django.db.backends.postgresql_psycopg2‘,
            ‘NAME‘: ‘database_name‘,
            ‘USER‘: ‘database_user‘,
            ‘PASSWORD‘: ‘database_password‘,
            ‘HOST‘: ‘‘,
            ‘PORT‘: ‘‘
        }
    }
    ...
    INSTALLED_APPS = (
        ...
        ‘quickstart‘,
        ‘rest_framework‘,
    )

    REST_FRAMEWORK = {
        ‘DEFAULT_PERMISSION_CLASSES‘: (‘rest_framework.permissions.IsAdminUser‘,),
        ‘PAGINATE_BY‘: 10
    }

最后通过syncdb创建数据库

    python manage.py syncdb

2. 序列化

接下来我们创建用于数据序列化的代码:

    # quickstart/serializers.py
    from django.contrib.auth.models import User, Group
    from rest_framework import serializers

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

    class GroupSerializer(serializers.HyperlinkedModelSerializer):
        class Meta:
            model = Group
            fields = (‘url‘, ‘name‘)

值得注意的是, 我们使用的是HyperlinkedModelSerializer. 你可以使用主键或者其他关系, 但使用HyperlinkedModelSerializer是一个好的 RESTful 设计.

3. Views

    # quickstart/views.py
    from django.contrib.auth.models import User, Group
    from rest_framework import viewsets
    from quickstart.serializers import UserSerializer, GroupSerializer

    class UserViewSet(viewsets.ModelViewSet):
        """
        允许查看和编辑user 的 API endpoint
        """
        queryset = User.objects.all()
        serializer_class = UserSerializer

    class GroupViewSet(viewsets.ModelViewSet):
        """
        允许查看和编辑group的 API endpoint
        """
        queryset = Group.objects.all()
        serializer_class = GroupSerializer

在django_rest_framework中, 所有常见的行为都被归到了ViewSets中. 当然我们可以将这些行为分拆出来, 但使用ViewSets, 使view的逻辑更为清楚.

使用queryset和serializer_class代替model变量, 使我们能更加好的控制API行为, 这也是我们推荐的使用方式.

4. URLs

    # tutorial/urls.py
    from django.conf.urls import patterns, url, include
    from rest_framework import routers
    from quickstart import views

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

    # Wire up our API using automatic URL routing.
    # Additionally, we include login URLs for the browseable API.
    urlpatterns = patterns(‘‘,
        url(r‘^‘, include(router.urls)),
        url(r‘^api-auth/‘, include(‘rest_framework.urls‘, namespace=‘rest_framework‘))
    )

因为我们使用的是viewset, 所以我们可以使用route class自动生成url conf.

5. 测试

至此我们的设置完成, 可以测试我们的REST API了, 首先启动django服务器:

    python ./manage.py runserver

我们可以使用curl命令:

    bash: curl -H ‘Accept: application/json; indent=4‘ -u admin:password http://127.0.0.1:8000/users/
    {
        "count": 2,
        "next": null,
        "previous": null,
        "results": [
            {
                "email": "[email protected]",
                "groups": [],
                "url": "http://127.0.0.1:8000/users/1/",
                "username": "admin"
            },
            {
                "email": "[email protected]",
                "groups": [                ],
                "url": "http://127.0.0.1:8000/users/2/",
                "username": "tom"
            }
        ]
    }

或者直接使用浏览器也可以:

时间: 2024-08-23 23:53:16

Django-Rest-Framework 教程: 快速入门的相关文章

Django REST framework 的快速入门教程

CRM-API项目搭建 序列器(Serializers) 首先,我们来定义一些序列器.我们来创建一个新的模块(module)叫做 crm/rest_searializer.py ,这是我们用来描述数据是如何呈现的. #从已存在的assets项目中导入数据models模块 from crm import models from rest_framework import serializers # Serializers定义了API的表现形式. #显示超连接,继承serializers.Hyper

Spring MVC 教程,快速入门,深入分析

资源下载: Spring_MVC_教程_快速入门_深入分析V1.1.pdf SpringMVC核心配置文件示例.rar 作者:赵磊 博客:http://elf8848.iteye.com 目录  一.前言二.spring mvc 核心类与接口三.spring mvc 核心流程图 四.spring mvc DispatcherServlet说明 五.spring mvc 父子上下文的说明 六.springMVC-mvc.xml 配置文件片段讲解 七.spring mvc 如何访问到静态的文件,如j

Python黑科技:50行代码运用Python+OpenCV实现人脸追踪+详细教程+快速入门+图像识

嗨,我最亲爱的伙计们,很高兴我们又见面了. 首先先感谢朋友们的关注.当然我更希望认识与计算机相关的领域的朋友咱们一起探讨交流.重点说一下,我是真人,不是那些扒文章的自媒体组织,大家可以相互交流的! 本篇文章我们来讲一下关于AI相关的人脸追踪,人脸识别相关的一些知识.当然本篇教程为(上)部分,讲一下利用python+opencv来实现人脸识别与追踪,明后天出(下)部分,用python来通过指纹对比实现人脸验证.人脸解锁(大家感兴趣的可以提前关注哦). 这两节课呢,代码量都不是很多,鄙人尽量多注释点

[转]Spring MVC 教程,快速入门,深入分析

.前言二.spring mvc 核心类与接口三.spring mvc 核心流程图 四.spring mvc DispatcherServlet说明 五.spring mvc 父子上下文的说明 六.springMVC-mvc.xml 配置文件片段讲解 七.spring mvc 如何访问到静态的文件,如jpg,js,css 八.spring mvc 请求如何映射到具体的Action中的方法 九. spring mvc 中的拦截器:十. spring mvc 如何使用拦截器 十一. spring mv

JUnit4使用教程-快速入门

序言 大学刚学java的时候就听说过JUnit了,单元测试框架,很好用的测试框架,JUnit测试框架将测试更加便捷和容易,编写测试代码也是简单.明了,功能强大.今天我给大家简单分享一下最新JUnit4的使用,几分钟入门! 导入jar包 在集成开发环境中导入相应jar包:junit-4.12.jar.hamcrest-core-1.3.rc2.jar.hamcrest-library-1.3.rc2.jar.如果只导入第一个jar的话就不能启动测试程序会报错,报错及几个包的关系详见我的博客:JUn

Spring_MVC_教程_快速入门_深入分析

Spring MVC 教程,快速入门,深入分析 博客分类: SPRING Spring MVC 教程快速入门 资源下载: Spring_MVC_教程_快速入门_深入分析V1.1.pdf SpringMVC核心配置文件示例.rar 作者:赵磊 博客:http://elf8848.iteye.com 目录 一.前言 二.spring mvc 核心类与接口 三.spring mvc 核心流程图 四.spring mvc DispatcherServlet说明 五.spring mvc 父子上下文的说明

Django REST framework入门教程1:序列化

入门介绍 本教程将涵盖一个简单的PasteBin1代码高亮的Web API.整个过程,将逐一介绍REST framework的各个组成部件,让你全面理解,组件之间是如何整合的. 本教程有点深度,所以在开始之前,你也许会需要几片曲奇饼,一杯你最爱的饮品.如果你只是想有个快速的鸟瞰,也许你该掉头去看看快速入门文档. 留意: 本教材的代码可以在Github中找到:tomchristie/rest-framework-tutorial.完整的代码部署在线上的沙盒版本(sand version)里,用作测

django rest framework 入门

django rest framework 入门1-序列化 Serialization 分类: Python 2013-01-22 22:24 11528人阅读 评论(0) 收藏 举报 djangopythonrest framework ************************************ 广告时间: 海淘导航网站推荐:海淘库:http://www.haitaocool.com/ 需要的请收藏哦 ************************************ 1.

EntityFramework6 快速入门教程

EntityFramework6 快速入门教程 不得不说EF在国内实在是太小众,相关的技术文章真实屈指可数,而且很多文章都很旧了,里面使用的版本跟如今的EF6差别还是比较大.我刚开始弄这个的时候真是绕了不少弯路. 学习EF还是需要一些条件,使用EF并不意味着你就可以完全不跟数据库打交道了,要学好EF,数据库中的什么主键.外键.索引.SQL等你还是要懂,另外EF中将大量使用LINQ来进行数据查询,数据模型中还将涉及到特性与泛型,所以对于C#的基础要求还比较高. 在我看来EF并不适合初学者使用,虽然