Django开发RESTful API怎么实现增删改查

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

数据库中有user表如下:

Django开发RESTful API怎么实现增删改查

新建一个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开发RESTful API怎么实现增删改查

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

发布于 2021-05-10 20:37:11
收藏
分享
海报
0 条评论
180
上一篇:使用Vue的示例分析 下一篇:MySQL怎么联合查询优化机制
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码