django rest api构建帮助程序
django-rester的Python项目详细描述
用于创建带有内置验证和身份验证的api的包
此产品旨在构建复杂度不同的api端点 以及嵌套。
核心是一个视图类baseapieview(标准的继承者) django视图)
- 巨蟒3+
- Django 1.11+
默认设置(可能被覆盖):
啊!django-u rester -django-rester设置:
'160;'160;'160;'160; 身份验证后端 -身份验证后端*
"160;"160;"1600;"1600; 响应结构 "错误或带有"成功"的dict, "消息"和"数据"作为值
'160;'160;'160;'1600; cors'u access -cors control:true,false,'*'hosts'u string
'160;'160;'160;'160; 字段'u check'u excluded'方法 使用车身结构检查进行处理
'160;'160;'160;'160; 软响应的验证 -如果为真,则不会剪切响应 如果它将包含响应结构字段之外的其他字段,则关闭
django rester u jwt -jwt身份验证设置(在 rester auth backend="djangou rester.resteru jwt"*:
'160;'160;'160;'160; 密钥 -jwt密钥
'160;'160;'160;'160; 过期 -令牌过期时间(datetime.now())+ rester过期
"160;"160;"1600;"1600; 验证头 -http头,用于验证令牌。
'160;'160;'1600;'160; 验证头前缀 -验证令牌的前缀 (授权:<;前缀>;<;令牌>;)
'160;'160;'160;'160; 算法 -密码算法
'160;'160;'160;'1600; 有效负载'u列表 -令牌编码的有效负载列表(将采用 指定 用户 创建令牌的属性)
"1604;"1604;"1600; 使用"redis -使用redis-服务器是否存储令牌
'160;'160;'160;'160; 登录'u字段 '用户登录字段(默认为'username',如中所示 詹戈)***
来自Django残留物。状态导入… 稍微修改的status.py 从drf 中,它很简单,而且 容易理解。
本文档中使用的任何状态都在该文件中描述。 ***\35;\35;\35;\35;\35;\354。内置异常:
从django/rester.exceptions导入… 异常,这将有助于 要识别与django-rester相关的错误
类resterexception(异常)
"160;"160;"160;"基本django-剩余异常,标准异常继承器
班级负责人R(例外)
_负责人或继承人,添加响应状态- HTTP U 500 U内部U服务器错误
班级负责人任务(负责人错误)
_负责人或继承人,响应状态更改为 http_400_bad_请求
类响应服务器错误(响应错误)
继承人责任人
班级负责人错误(负责人错误)
_负责人或继承人,响应状态更改为 http_401;u未经授权
类响应消息(响应者错误)
继承人责任人
_可接受参数:*,消息='',数据=无, 状态=http_200_正常
类响应电子邮件(响应者错误)
继承人责任人
_可接受参数:*,消息='',数据=无, status=http_500_internal_server_error
班级负责人列表(负责人错误)
继承人责任人
_可接受的参数:*,消息=无, 状态=http_400_bad_请求
消息可以是列表、元组或字符串。
类jsonfielderror(resterexception)
__resterexception继承器,基本jsonfield异常
类jsonfieldmodeltypeerror(jsonfielderror)
_JsonField异常,当模型参数的类型不是 有效< /P>
类jsonfeldmodelerror(jsonfelderror)
_JsonField异常,模型参数值不为时引发 有效< /P>
类jsonfeldtypeerror(jsonfelderror)
jsonfield异常,jsonfield类中的简单类型错误
类jsonfeldvalueerror(jsonfelderror)
jsonfield异常,jsonfield类中的简单值错误
类BaseApiViewException(异常)
_ BaseApiView异常类
类请求结构异常(BaseApiViewException)
_请求结构无效时引发
类响应结构异常(requestStructureException)
如果响应结构无效,则引发。许可 类< /P>
来自django_rester.permission import… 已创建权限类 使用decorator进行交互(使用的好例子),或者 以任何其他您想要的方式
所有权限类只接受init上的一个参数-django 查看请求对象。
所有权限类都有两个属性,定义于 init :
检查 :bool-如果请求,则返回 true 或 false 。用户可以或 可能无法访问终结点方法
消息 :可以是字符串或消息列表 类 基本权限
_包含所有基本权限方法,不建议使用 直接在项目中使用
类已验证(基本权限)
__check= 真 如果用户已验证并处于活动状态,则为 假
类isadmin(basepermission)
__check= true 如果用户已验证并处于活动状态且是超级用户, 否则 错误
类允许(basepermission)
_对任何用户(即使是匿名用户)检查
从django_rester.decorators导入… @permissions()
接受权限类或列表,类的元组。
如果检查通过,则允许用户使用端点
示例:
class Example(BaseApiView): @permissions(IsAdmin) def post(request, request_data, *args, **kwargs): pass
从django_rester.views导入… 类baseapieview(view)
继承自标准Django VIE.
类属性:
_ 身份验证 -身份验证后端实例
_ 请求字段 -请求验证器(使用jsonfield构建 验证器)
_ 响应字段 -响应验证器(使用jsonfield构建 此验证器)
类http方法(get、post、put等)接受下一个参数: 请求,请求数据,*参数,**千瓦
_ 请求 -标准django视图请求对象
_ 请求数据 -所有接收到的请求参数都是json 序列化对象
所选身份验证后端的用户身份验证类 登录(BaseApiView)
可用于使用选定的身份验证后端对用户进行身份验证。
允许的方法仅为"POST"。
_请求参数中需要用户名和密码(用户名 fieldname参数可以在设置中设置)
_如果身份验证,则返回令牌和http_200_OK状态代码 成功,错误消息和http_401;u如果失败则未经授权 类 注销(BaseApiView)
可以用来注销(支持redis)或只是让别人知道 关于注销过程的前端。任何视图都可以用同样的方法,这里 是一个简单的例子
_ 应用程序/视图.py:
fromdjango_rester.viewsimportBaseAPIViewfromdjango_rester.decoratorsimportpermissionsfromdjango_rester.exceptionsimportResponseOkMessagefromdjango_rester.permissionimportIsAdminfromdjango_rester.statusimportHTTP_200_OKfromapp.modelsimportModel# import Model from your applicationfromdjango_rester.fieldsimportJSONFieldclassTestView(BaseAPIView):request_fields={"POST":{"id":JSONField(field_type=int,required=True,),"title":JSONField(field_type=str,required=True,default='some_title'),"fk":[{"id":JSONField(field_type=int,required=True)}],}}response_fields={"POST":{"id":JSONField(field_type=int,required=True,),"title":JSONField(field_type=str,required=True,default='some_title'),# ...}}defretrieve_items():returnModel.objects.all()defcreate_item(title):item,cre=Model.objects.get_or_create(title=title)returnitem,cre@permissions(AllowAny)defget(self,request,request_data,*args,**kwargs):items=self.retrieve_items()response_data={...hereweshouldbuildsomeresponsestructure...}***returnresponse_data,HTTP_200_OK@permissions(IsAdmin)defpost(self,request,request_data,*args,**kwargs):title=request_data.get('title',None)# no need to check 'if title', because it is allready validated by 'available_fields'# ... here we will do some view magic with the rest request_dataitem,cre=self.create_item(title)ifnotcre:raiseResponseOkMessage(message='Item allready exists',data={'title':title})response_data={...hereweshouldbuildsomeresponsestructure...}***returnresponse_data
_ 应用程序/url.py:
fromdjango.conf.urlsimporturlfrom.viewsimportTestViewurlpatterns=[url(r'^test/',TestView.as_view()),]
从django_rester.fields导入… 类jsonfield
类属性:
_ 字段类型 -数据类型(int、float、str、bool)
_ 必需 -字段是必需的
_ 默认值 -如果未指定,则为默认值
_ 空白 -可以是空白,也可以不是空白
_ 模式 -外交模式
_ 字段 -对外关系字段
方法(公共),正常使用时,代码中不需要它们:
_ 检查类型 -验证jsonfield值的类型
_ 验证 -使用参数验证字段值***
*-目前只有一个身份验证后端可用- rester_jwt
**-BaseApiView处于活动开发阶段,其他属性和 方法很快就会添加
***-自动响应结构构建-最近的任务之一