在使用django进行前后台分离开发时通常会搭配django-rest-framework
框架创建RESTful风格的接口API。框架介绍及版本要求可参考官方地址:https://www.django-rest-framework.org
本文以创建man
包含name
、sex
字段的API为实例学习django-rest-framework
框架的使用。
主要包含下面5个步骤:
创建Django项目创建ORM模型加载Django REST Framework序列化模型创建加载数据的vIEw和url1.创建Django项目创建django_rest
django-admin startproject django_rest
进入django_rest,创建虚拟环境env
virtualenv env
激活虚拟环境,并安装django
source ./env/bin/activate
安装 django
pip install django
创建rest_app
python manage.py startapp rest_app
注册app,将app添加到INSTALLED_APPS
#setting.pyINSTALLED_APPS = [ 'django.contrib.admin','django.contrib.auth','django.contrib.ContentTypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','rest_app']
创建后台admin账户用于管理
$ python manage.py createsuperuserUsername (leave blank to use 'root'):admin Email address: Password: Password (again): Superuser created successfully.
2.创建ORM模型数据库我们使用默认sqlite3 即可,如需要变更可在setting.py中databases配置。
修改我们/django_rest/models.py添加我们man
的模型
#models.pyfrom django.db import models# Create your models here.class Man(models.Model): name = models.CharFIEld(max_length=64) sex = models.CharFIEld(max_length=64) def __str__(self): return self.name
做数据库迁移
python manage.py makemigrations python manage.py migrate
将Man这个model注册到我们的后台,以便可以通过django的后台做增删查改,编写admin.py如下
#admin.pyfrom django.contrib import adminfrom .models import Man# Register your models here.admin.site.register(Man) # 注册Man到后台
启动django服务
python manage.py runserver
访问 http://127.0.0.1:8000/admin/可以看到登录界面,输入密码登录
可以看到我们的rest_app下的模型man对象mans
我们添加一个那个男人lgd.ame
3. 加载Django REST Framework安装工具包
pip install djangorestframework
注册rest_framework
#setting.pyINSTALLED_APPS = [ 'django.contrib.admin','rest_app' 'rest_framework' #注册]
4.序列化模型序列化器会把我们的模型数据转化(序列化)为Json格式,这样就能够被请求了。同样当有josn数据提交过来的时候,序列化器会将Json数据转换为模型供咋们使用。
我们在rest_app下创建文件serializer.py
我们要做三件事:
导入Man模型导入序REST Framework序列化器创建新的类将模型和序列化器链接起来from rest_framework import serializersfrom .models import Manclass Manserializer(serializers.HyperlinkedModelSerializer): class Meta: model = Man fIElds = ('name','sex')
5.创建加载数据的vIEw和url我们需要把序列化后的数据返回给浏览器,所以要做一下步骤:
通过不通的Man查询数据库将查询后的数据传递给序列化器,通过序列化器转化为Json我们在rest_app/vIEws.py编写我们的视图,ModelVIEwSet
由rest_framework提供,包含了get、post方法
# vIEws.pyfrom rest_framework import vIEwsetsfrom .serializers import ManSerializerfrom .models import Manclass ManVIEwSet(vIEwsets.ModelVIEwSet): queryset = Man.objects.all().order_by('name') #查询结果给queryset serializer_class = ManSerializer #对结果进序列化
在django_rest目录下urls.py添加API路由
from django.contrib import adminfrom django.urls import path,includeurlpatterns = [ path('admin/',admin.site.urls),path('',include('rest_app.urls')),]
在rest_app目录下创建urls.py添加视图路由,通过rest_framework中router确保我们的请求到正确的动态资源。
from django.urls import include,pathfrom rest_framework import routersfrom . import vIEwsrouter = routers.DefaultRouter()router.register(r'man',vIEws.ManVIEwSet) #路由到ManVIEwSet视图# Wire up our API using automatic URL routing.# Additionally,we include login URLs for the browsable API.urlpatterns = [ path('',include(router.urls)),#使用router路由 path('API-auth/',include('rest_framework.urls',namespace='rest_framework'))]
最后我们来启动服务,访问http://127.0.0.1:8000/ 可以在浏览器查看到我们API信息
python manage.py runserver
访问http://127.0.0.1:8000/man/ 来查看man资源
通过ID来访问API资源http://127.0.0.1:8000/man/1/
这样我们一个基础restful风格的API创建完成了。感觉关键点还是理解ModelVIEwSet
和内置router
不读源码很难知其所以然。
文章有不足的地方欢迎在评论区指出。
欢迎收藏、点赞、提问。关注顶级饮水机管理员,除了管烧热水,有时还做点别的。
总结以上是内存溢出为你收集整理的python django中restful框架的使用 全部内容,希望文章能够帮你解决python django中restful框架的使用 所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)