django rest api构建帮助程序

django-rester的Python项目详细描述


用于创建带有内置验证和身份验证的api的包

此产品旨在构建复杂度不同的api端点 以及嵌套。

核心是一个视图类baseapieview(标准的继承者) django视图)


<H3>1。要求
  1. 巨蟒3+
  2. Django 1.11+

<H3>2。设置

默认设置(可能被覆盖):

啊!

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',如中所示 詹戈)***

<H3>3。内置状态

来自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)

_对任何用户(即使是匿名用户)检查


<H3>6。内置装饰器

从django_rester.decorators导入… @permissions()

接受权限类或列表,类的元组。

如果检查通过,则允许用户使用端点

示例:

class Example(BaseApiView):

    @permissions(IsAdmin)
    def post(request, request_data, *args, **kwargs):
        pass

<H3>7。内置视图

从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()),]

<H3>8。内置字段

从django_rester.fields导入… 类jsonfield

类属性:

_ 字段类型 -数据类型(int、float、str、bool)

_ 必需 -字段是必需的

_ 默认值 -如果未指定,则为默认值

_ 空白 -可以是空白,也可以不是空白

_ 模式 -外交模式

_ 字段 -对外关系字段

方法(公共),正常使用时,代码中不需要它们:

_ 检查类型 -验证jsonfield值的类型

_ 验证 -使用参数验证字段值***

*-目前只有一个身份验证后端可用- rester_jwt

**-BaseApiView处于活动开发阶段,其他属性和 方法很快就会添加

***-自动响应结构构建-最近的任务之一

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何在Salesforce中查询自定义对象?   RichFaces 4中的java ExtendedDataTable:数据模型处理   java Android类层次结构和带有片段的接口   java如何在文件中保存JLabel的颜色/大小?   java编辑类中的返回值而不修改类本身?   安卓如何替换字符串java中的ï»   1.3.7.发布>1.4.1。发布| java。lang.NoSuchMethodError:org。springframework。靴子建设者SpringApplicationBuilder。展示横幅   java列表保存在模型中,而不在setter中进行设置   java如何打开一个窗口。windows中的ks文件?   Java HashMap获取值(其中大部分值)   vps的javascript Websocketurl?   使用byte buddy或某些库进行java评测   java Dom4j获取单节点文本值