django restful API 代码自动生成,django rest api
框架中的开发接口有两种模式价值和CBV,分别是基于函数视图和基于类视图,详细的可以看看菜鸟教程的姜戈视图价值与CBV,由于本文的用户管理是一个安静的风格的api,所以我选择的是类视图的开发风格。
简单用户型号:
从django.db导入模型
#在此创建您的模型。
类别用户(型号。型号):
SEX_ITEMS=(
(2, 未知),
(1, 男),
(0, 女),
)
名称=型号CharField(max_length=128,verbose_name=姓名)
性=模特IntegerField(choices=SEX_ITEMS,默认值=2,详细名称=性别)
id卡=型号CharField(max_length=18,verbose_name=身份证号码,唯一=真)
邮件=模特电子邮件字段(详细名称=邮箱地址)
地址=型号CharField(max_length=256,verbose_name=家庭住址)
公司=型号CharField(max_length=256,verbose_name=所属公司)
创建时间=模型datetime字段(auto _ now _ add=True,verbose_name=创建时间)
def __str__(self):
返回自己的名字
类别元:
详细名称=详细名称复数=用户管理
配置路由:
来自姜戈. contrib导入管理
从django.urls导入路径
从用户管理导入视图
urlpatterns=[
路径( admin/,admin.site.urls),
路径( user/),视图UsersView.as_view()),
路径( user//),视图UsersView.as_view())
]我们先从用户管理用户管理应用中导入视图模块,然后配置用户/路由作为本次的访问路径。
视图开发:
获取:
访问路由:
首先http://127 .0 .0 .1:8000/用户/获取方法应该可以访问全部的用户然后http://127 .0 .0 .1:8000/用户/1/获取方法应该可以访问单个用户http://127 .0 .0 .1:8000/用户/?name=XX/get方法应该可以过滤出符合条件的用户
则得到请求实现方式:
导入数据
从django.http导入JsonResponse
从django . views . general导入视图
从django .表单.模型导入模型_到_字典
从。模型导入用户
类别用户视图(视图):
定义获取(自身,请求,pk=0):
如果主键:
尝试:
user=Users.objects.get(pk=pk)
用户=模型到字典(用户)
返回JsonResponse({code: 200, message: success , data: user},status=200)
用户除外。不存在:
返回JsonResponse({code: 404, message :用户不存在},状态=200)
数据=JSON。负载(请求。body)如果需要。正文其他{ }
用户=列表(用户。对象。过滤器(* *数据).全部()。values())
返回JsonResponse({code: 200, message: success , data: users},status=200)通过公园参数区分是单个用户还是多个用户。
然后通过请求的请求来过滤对应的数据
帖子:
分析一下邮政请求,我们邮政请求是添加一条数据。根据安静的的规范添加数据的同时我们必须要返回该请求的信息。
实现:
导入数据
从django .表单.模型导入模型_到_字典
从django . views . general导入视图
从django.http导入JsonResponse
从django.db.utils导入完整性错误
从。模型导入用户
类别用户视图(视图):
.
定义发布(自己,请求):
data=json.loads(request.body)
尝试:
用户=用户。对象。创建(* *数据)
用户=模型到字典(用户)
返回JsonResponse({code: 201, message: created , data: user},status=201)
除了完整性错误:
返回JsonResponse({code: 400, message :身份证号码已存在!},状态=200)一般会遇到访问问题:
那么这个是跨站点请求伪造验证失败,什么是跨站点请求伪造呢?看看度娘怎么说吧跨站请求伪造(英语:跨站点请求伪造)
知道了是什么那么怎么处理呢姜戈内置了一个方法,我们只需要添加上就行了。更改代码
从django.views.decorators.csrf导入csrf _免税
#在此创建您的观点。
类别用户视图(视图):
@csrf_exempt
定义调度(自身,请求,*参数,*kwargs):
返回超级(用户视图,自己).派遣(请求,*参数,*克沃格)
.
定义发布(自己,请求):
data=json.loads(request.body)
尝试:
用户=用户。对象。创建(* *数据)
除了完整性错误:
返回JsonResponse({code: 400, message :身份证号码已存在!},状态=200)
用户=模型到字典(用户)
返回JsonResponse({code: 201, message: created , data: user},status=201)使用csrf _免税装饰器给派遣就可以了。
放:
更新一条数据。
实现:
定义放(自身,请求,pk=0):
data=json.loads(request.body)
user=Users.objects.get(pk=pk)
对于键,data.items()中的值:
setattr(用户,键,值)
user.save()
用户=模型到字典(用户)
返回JsonResponse({code: 200, message: updated , data: user},status=200)
删除:
删除一条数据,删除数据和更新数据一样,都需要指定具体的数据,避免胡删除。
实现:
定义删除(自身,请求,pk=0):
user=Users.objects.get(pk=pk)
user.delete()
返回JsonResponse({code: 204, message: deleted},status=204)
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。