zoukankan      html  css  js  c++  java
  • django-rest-framework 快速开始

     

    搭建项目

    # Set up a new project
    django-admin.py startproject tutorial
    cd tutorial

    # Create a virtualenv to isolate our package dependencies locally
    virtualenv env
    source env/bin/activate # On Windows use `envScriptsactivate`

    # Install Django and Django REST framework into the virtualenv
    pip install django
    pip install djangorestframework

    # Create a new app
    python manage.py startapp quickstart

    设置数据库

    编辑文件tutorial/settings.py
    DATABASES = {
    'default': {
    'ENGINE': 'django.db.backends.sqlite3',
    'NAME': 'database.sql',
    'USER': '',
    'PASSWORD': '',
    'HOST': '',
    'PORT': ''
    }
    }
    然后执行 python ./manage.py syncdb

    定义序列化类型

    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序列化,返回结果里会包含记录的url。

    定义视图

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

    class UserViewSet(viewsets.ModelViewSet):
    """
    API endpoint that allows users to be viewed or edited.
    """
    queryset = User.objects.all()
    serializer_class = UserSerializer

    class GroupViewSet(viewsets.ModelViewSet):
    """
    API endpoint that allows groups to be viewed or edited.
    """
    queryset = Group.objects.all()
    serializer_class = GroupSerializer
    如果只写model属性也是可以的,queryset 和 serializer_class会自动被生成。但是还是推荐直接写出来,这样更明了。

    定义路由

    rom 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'))
    )

    由于我们使用的是viewsets 视图,而非view,因此可以自动生存URL API。最后我们加入了登录和退出API,非常方便。

    修改配置

    INSTALLED_APPS = (
    ...
    'rest_framework',
    )

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

    加入了分页,和权限,只有admin可以访问。

    www.jx-lab.com

  • 相关阅读:
    python 全局变量与局部变量
    Python 百分号字符串拼接
    Python集合的基本操作
    sorted by value in dict python
    gVim vundle
    vim config
    vim move the cursor in a long sentence
    步步为营-37-自动生成数据库连接字符串
    步步为营-36-ADO.Net简介
    步步为营-35-SQL语言基础
  • 原文地址:https://www.cnblogs.com/codebyzw007/p/3645389.html
Copyright © 2011-2022 走看看