• Django REST framework


    如果要在django项目实现restful api, 那么一个方便的做法就是使用django rest framework这个app。

    http://www.django-rest-framework.org/

    1.安装##

    
    pip install djangorestframework
    
    

    就像安装普通应用一样

    然后修改项目的settings.py

    
    INSTALLED_APPS = {
    
        ...
    
        'rest_framework',
    
    }
    
    

    如果你还要使用rest_framework的browserable API(这个可以在浏览器中查看), 那么你可能也要添加登录views.在urls.py中添加

    
    urlpatterns = {
    
        ...
    
        url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framwork')),
    
    

    2.示例##

    首先建立一个项目和应用:

    
    django-admin startproject rest
    
    cd rest
    
    django-admin startapp post
    
    python manage.py migrate
    
    

    然后跟着1里面的步骤安装rest_framework

    接着我们在post/models.py里面建立我们的Post对象:

    
    from django.db import models
    
    class Post(models.Model):
        title = models.CharField(max_length=40)
        content = models.TextField()
    

    settings.py:

    
    INSTALLED_APPS = [
    
        ...
    
        'post.apps.PostConfig',
    
    ]
    
    

    为了方便我们创建一个admin用户并且添加post对象:

    
    python manage.py createsuperuser
    
    

    post/models.py

    
    from django.contrib import admin
    from .models import Post
    
    admin.site.register(Post)
    

    将post对象迁移到数据库

    
    python manage.py makemigrations post
    
    python manage.py migrate
    
    

    然后通过在admin视图里面建立几个post对象。

    下面我们要建立post对象的链接,这个是rest_framework需要用来控制post对象。

    新建post/serializers.py

    
    from rest_framework import serializers
    from .models import Post
    
    class PostSerializer(serializers.HyperlinkedModelSerializer):
        class Meta:
            model = Post
            fields = ('title', 'content', 'pub_date')
    

    然后要显示这些需要写viewset, 就相当于集成了rest操作的视图集。

    
    from django.shortcuts import render
    from rest_framework import viewsets
    from .models import Post
    from .serializers import PostSerializer
    
    class PostViewSet(viewsets.ModelViewSet):
        queryset = Post.objects.all()
        serializer_class = PostSerializer
    

    然后使用rest_framework的router, 就不用我们自己配置urls了

    建立post/urls.py

    
    from django.conf.urls import url, include
    from rest_framework import routers
    from .views import PostViewSet
    
    router = routers.DefaultRouter()
    router.register(r'posts', PostViewSet)
    
    urlpatterns = [
       url(r'^', include(router.urls)),
    ]
    
    
    urlpatterns = [
    
        url(r'^post/', include('post.urls'))
    
    ]
    
    

    到这里就可以了。

    
    python manage.py runserver
    
    

    然后打开浏览器: localhost:8000/post/posts

    就可以看到Django REST framework的视图,并且显示了你的Post对象,而且提供了GET, POST等RESTful操作。

  • 相关阅读:
    sqlite设置主键
    sqlite 分页
    Server.Transfer方法在页面间传值
    JS实现背景透明度可变,文字不透明的效果
    css hack 区分浏览器
    Asp.net(c#)实现多线程断点续传
    C# 中的委托和事件
    使用C#的HttpWebRequest访问网站
    相似图片搜索的原理
    asp.net内存溢出问题
  • 原文地址:https://www.cnblogs.com/wenning/p/5423918.html
Copyright © 2020-2023  润新知