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接口我们就可以直接从数据库中查询到数据,增删改查都是可以的!实现起来如此简单!

时间: 2024-10-12 21:30:21

django使用rest_framework的相关文章

Django的rest_framework的视图之基于ModelViewSet视图源码解析

前言 今天一直在整理Django的rest_framework的序列化组件,前面一共写了2篇博客,前面的博客给的方案都是一个中间的状态的博客,其中有很多的冗余的代码,如果有朋友不清楚,可以先看下我前面的博客 第一篇,使用minix类来实现序列化和反序列化 https://www.cnblogs.com/bainianminguo/p/10463741.html 第二篇,使用通用的类的方法实现序列化和反序列化 https://www.cnblogs.com/bainianminguo/p/1046

Django的rest_framework的权限组件和频率组件源码分析

前言: Django的rest_framework一共有三大组件,分别为认证组件perform_authentication,权限组件check_throttles: 我在前面的博客中已经梳理了认证组件,不知道大家有没有看懂:在这里我把认证的组件的博客地址在贴出来,不清楚的人可以看下 局部设置认证组件的博客:https://www.cnblogs.com/bainianminguo/p/10480887.html 全局设置认证组件的博客:https://www.cnblogs.com/baini

Django的rest_framework的分页组件源码分析

前言: 分页大家应该都很清楚,今天我来给大家做一下Django的rest_framework的分页组件的分析:我的讲解的思路是这样的,分别使用APIview的视图类和基于ModelViewSet的视图类两种方式实现分页的功能,同时我也会介绍两个分页的类,PageNumberPagination类和LimitOffsetPagination,希望能对大家有所帮助! 今天的博客主要的这样的,先讲解基于APIView类的两种分页类的实现方式,然后在讲解基于ModelViewSet类的两种分页类的实现方

django添加REST_FRAMEWORK 接口浏览

1.安装rest_framework pip install djangorestframework  2.配置rest_framework ## 将rest_framework加入项目app列表 INSTALLED_APPS = [ 'rest_framework', ] ## 其他配置 # ======rest api====== REST_FRAMEWORK = { # Use Django's standard `django.contrib.auth` permissions, # o

Django中rest_framework的认证组件,权限组件,频率组件,序列化组件的最简化版接口

url urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^login/', views.Login.as_view()), # Book表 url(r'^books/$',views.BookHandle.as_view({ 'get':'list', 'post':'create' })), url(r'^books/(?P<pk>\d+)/',views.BookHandle.as_view({ 'get':'retrieve

Django之REST_FRAMEWORK 认证组件

Django之DRF之认证组件 # from rest_framework.views import APIView # APIView 中的 dispatch 中 执行的 self.initial(request,*args,**kwargs)中的 # APIView---->dispatch------>self.initial------>三个校验 # self.perform_authentication(request) # 认证校验 # self.check_permissi

Django的rest_framework的视图之基于通用类编写视图源码解析

我们上一篇博客讲解了如何使用mixins类实现rest_framework的视图,但是其中有很多的冗余的代码,我们这边在来优化一下 1.queryset的视图函数 首先看下对queryset操作的视图类是怎么写的 from rest_framework import mixins from rest_framework import generics class Auther_view(generics.ListCreateAPIView): queryset = models.Auther.o

Django的rest_framework的视图之Mixin类编写视图源码解析

Mixin类编写视图 我们这里用auther表来做演示,先为auther和autherdetail写2个url url(r'^autherdetail/(?P<id>\d+)', views.Book_detail_cbv.as_view(), name="autherdetail"), url(r'^auther/', views.Book_cbv.as_view(),name="auther"), 然后分别为这2个类写对应的序列化的类 class a

Django中rest_framework的APIView,序列化组件和视图组件

url urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^books/$', views.BookHandle.as_view()), url(r'^books/(\d+)', views.GetBookHandle.as_view()), url(r'^publishs/$', views.PublishHandel.as_view()), ] views #####################################