Django开发RESTful API怎么实现增删改查
小编给大家分享一下Django开发RESTful API怎么实现增删改查,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
数据库中有user表如下:
新建一个Django项目:
django-admin.pystartprojectmyDjango<project_name>
目录介绍
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<app_name>
目录介绍:
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=[ url(r'^getlistpic',users_views.getlistpic,name='home'), url(r'^getlist',users_views.getlist,name='home'), url(r'^addUser',users_views.addUser,name='home'), url(r'^deleteUser',users_views.deleteUser,name='home'), url(r'^updateUser',users_views.updateUser,name='home') ]
启动项目:
pythonmanage.pyrunserver127.0.0.1:8000
访问结果:
以上是“Django开发RESTful API怎么实现增删改查”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注恰卡编程网行业资讯频道!
推荐阅读
-
浅析Django接口版本控制
-
Django+Celery实现定时任务的示例
-
Python(django中如何使用restful框架)
-
Django实现drf搜索过滤和排序过滤
-
Django中怎么将ValuesQuerySet转换成json
今天就跟大家聊聊有关Django中怎么将ValuesQuerySet转换成json,可能很多人都不太了解,为了让大家更加了解,小编...
-
Django分页器的使用方法
这篇文章主要介绍了Django分页器的使用方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面...
-
Python Django搭建文件下载服务器的实现shili
-
在Django中如何使用MQTT的方法
这篇文章主要介绍了在Django中如何使用MQTT的方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有...
-
Django如何显示可视化图表的实践
-
django中xadmin管理器常用显示的设置方式有哪些
这篇文章主要介绍了django中xadmin管理器常用显示的设置方式有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读...