django开发restful api怎么实现增删改查-mile米乐体育
开发技术
2021年05月10日 20:37
3
小编给大家分享一下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怎么实现增删改查”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注恰卡编程网行业资讯频道!
展开全文