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=[ 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接口版本控制一、前言在RESTful规范中,有关版本的问题,用restful规范做开放接口的时候,用户请...
-
Django+Celery实现定时任务的示例
Django+Celery实现定时任务的示例目录一、前言二、配置使用定义与触发任务扩展三、Django中使用定时任务二次开...
-
Python(django中如何使用restful框架)
Python,django中如何使用restful框架在使用django进行前后台分离开发时通常会搭配django-res...
-
Django实现drf搜索过滤和排序过滤
Django实现drf搜索过滤和排序过滤前言当我们需要对后台的数据进行过滤的时候,drf有两种,搜索过滤和排序过滤。搜...
-
Django中怎么将ValuesQuerySet转换成json
今天就跟大家聊聊有关Django中怎么将ValuesQuerySet转换成json,可能很多人都不太了解,为了让大家更加了解,小编...
-
Django分页器的使用方法
这篇文章主要介绍了Django分页器的使用方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面...
-
Python Django搭建文件下载服务器的实现shili
这篇文章主要介绍PythonDjango搭建文件下载服务器的实现shili,文中介绍的非常详细,具有一定的参考价值,感兴趣的小...
-
在Django中如何使用MQTT的方法
这篇文章主要介绍了在Django中如何使用MQTT的方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有...
-
Django如何显示可视化图表的实践
这篇文章主要介绍Django如何显示可视化图表的实践,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一实战1...
-
django中xadmin管理器常用显示的设置方式有哪些
这篇文章主要介绍了django中xadmin管理器常用显示的设置方式有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读...
