在项目的setting.py文件中 “INSTALLED_APPS“加入 'rest_framework'

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文件中加入

fromdjango.conf.urlsimporturl,includefromdjango.contrib.auth.modelsimportUserfromrest_frameworkimportrouters,serializers,viewsets#serilizers数据访问层:定义API的表现形式;将models变为可序列化的,供其他系统调用;#viewsets逻辑处理层:定义展示行为#routers和django的url路由系统差不多,自动决定urlclassUserSerializer(serializers.HyperlinkedModelSerializer):classMeta:model=Userfields=('url','username','email','is_staff')classUserViewSet(viewsets.ModelViewSet):queryset=User.objects.all()serializer_class=UserSerializerrouter=routers.DefaultRouter()router.register(r'users',UserViewSet)urlpatterns=[url(r'^',include(router.urls)),]

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





4.自己定义一个blog的api

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

fromdjango.dbimportmodels#Createyourmodelshere.classBlog(models.Model):title=models.CharField(max_length=50)content=models.TextField()

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



app01下的api.py文件:

fromdjango.contrib.auth.modelsimportUserfromrest_frameworkimportrouters,serializers,viewsetsfromapp01importmodelsfromrest_frameworkimportresponseclassUserSerializer(serializers.HyperlinkedModelSerializer):classMeta:model=Userfields=('url','username','email','is_staff')classUserViewSet(viewsets.ModelViewSet):queryset=User.objects.all()serializer_class=UserSerializerclassBlogSerializer(serializers.HyperlinkedModelSerializer):classMeta:model=models.Blogdepth=1fields=('url','title','content',)classBlogViewSet(viewsets.ModelViewSet):queryset=models.Blog.objects.all()serializer_class=BlogSerializer

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


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

fromdjango.conf.urlsimportinclude,urlfromdjango.contribimportadminfromrest_frameworkimportroutersfromapp01importapifromapp01importviewsrouter=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文件中加入:

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