django开发restful api怎么实现增删改查-亚博电竞手机版

小编给大家分享一下django开发restful api怎么实现增删改查,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

数据库中有user表如下:

新建一个django项目:

django-admin.pystartprojectmydjango

目录介绍

mydjango/ ├──manage.py#管理文件 └──mydjango#项目目录 ├──__init__.py ├──settings.py#配置文件 ├──urls.py#路由-->url和函数的对应关系 └──wsgi.py#runserver命令就使用wsgiref模块做简单的webserver

使用rest_framework

在setting.py中添加:

installed_apps=[ ... 'rest_framework' ]

连接mysql数据库

在setting.py中设置:

databases={ 'default':{ 'engine':'django.db.backends.mysql', 'name':'bigdatatest', 'user':'root', 'host':'127.0.0.1', 'password':'1009', 'port':3306, 'options':{'charset':'utf8mb4'}, } }

在__init__.py中添加:

importpymysql pymysql.version_info=(1,4,13,"final",0) pymysql.install_as_mysqldb()

新建app

pythonmanage.pystartappusers

目录介绍:

users/ ├──migrations#用于在之后定义引用迁移功能 ├──__init__.py ├──__init__.py ├──admin.py#管理站点模型的声明文件,默认为空 ├──apps.py#应用信息定义文件。在其中生成了类appconfig,类用于定义应用名等meta数据 ├──models.py#添加模型层数据类的文件 ├──tests.py#测试代码文件 └──views.py#定义url响应函数

在setting.py中添加:

installed_apps=[ ... 'users' ]

把数据库中的表生成对应的model

pythonmanage.pyinspectdb

将我们表的model拷贝到users下的models.py里

fromdjango.dbimportmodels  classuser(models.model): id=models.integerfield(primary_key=true) name=models.charfield(max_length=255,blank=true,null=true) age=models.integerfield(blank=true,null=true)  classmeta: managed=false db_table='user'

创建一个序列化serializer类,使之可以转化为,某种表现形式如json

在users目录下,创建文件serializers.py

fromrest_frameworkimportserializers fromusers.modelsimportuser  classuserserializer(serializers.modelserializer): classmeta: model=user fields="__all__"

数据输出

编写users下的views.py

from__future__importunicode_literals  fromrest_framework.decoratorsimportapi_view fromrest_framework.responseimportresponse  fromuser.modelsimportuser fromuser.serializersimportuserserializer  @api_view(['get']) defgetlist(request):#获取全部数据 ifrequest.method=='get': users=user.objects.values('id','name','age').distinct() serializer=userserializer(users,many=true) returnresponse(serializer.data)  @api_view(['get']) defgetlistpic(request):#根据id查找单条数据 id=request.get['id'] ifidisnotnone: users=user.objects.filter(id=id) serializer=userserializer(users,many=true) returnresponse(serializer.data) else: returnresponse(str('请传id'))  @api_view(['post']) defadduser(request):#添加数据 ser=userserializer(data=request.data) ifser.is_valid(): ser.save() returnresponse(ser.data) returnresponse(ser.errors)  @api_view(['get']) defdeleteuser(request):#根据id添加删除 id=request.get['id'] ifidisnotnone: ifuser.objects.filter(id=id): user.objects.get(id=id).delete() returnresponse(str('success')) else: returnresponse(str('没有此id')) else: returnresponse(str('请传id'))  @api_view(['post']) defupdateuser(request):#根据id修改数据 ifuser.objects.filter(id=request.data['id']): user=user.objects.get(id=request.data['id']) ser=userserializer(instance=user,data=request.data)#注意指定参数 ifser.is_valid(): ser.save() returnresponse(str('success')) returnresponse(ser.errors) returnresponse(str('没有此id'))

在urls.py中设置:

fromdjango.conf.urlsimporturl fromusersimportviewsasusers_views urlpatterns=[ , , , ,  ]

启动项目:

pythonmanage.pyrunserver127.0.0.1:8000

访问结果:

以上是“django开发restful api怎么实现增删改查”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注恰卡编程网行业资讯频道!

展开全文
内容来源于互联网和用户投稿,文章中一旦含有亚博电竞手机版的联系方式务必识别真假,本站仅做信息展示不承担任何相关责任,如有侵权或涉及法律问题请联系亚博电竞手机版删除

最新文章

网站地图