对django rest框架强制执行客户端视图集要求

django-rest-secureview的Python项目详细描述


[![PYPI版本](https://badge.fury.io/py/django rest secureview.svg)(https://badge.fury.io/py/django rest secureview)
[![构建状态](https://travis-ci.org/fmitra/django-rest-secureview.svg?branch=master)](https://travis ci.org/fmitra/django rest secureview)



目前,它的重点是在post params中强制执行特定的模型键,或者要求用户与他们正在访问的模型具有外键关系。

要求

1。python 2或python 3
2.django
3.django rest框架

安装包

`pip install django rest secureview`

2。从django\u rest\u secureview导入decorators和viewset规则

`` python
。decorators导入需要从django\u rest\u secureview导入
。view\u规则导入参数
```

3。decorate viewsets

`` python
来自rest_framework。viewsets导入modelviewset
来自django_rest_secureview。decorators导入需要从django_rest_secureview导入modelviewset。view_规则导入参数

类apiendpoint(modelviewset):
@require(params,params=['dog','cat'])
def create(self,request):
pass
```

\viewRules

viewRules包含正在实施的API条件背后的逻辑。使用“require”装饰符至少需要一个viewrule。这个包中的默认viewrules都希望有特定的关键字参数来补充它们。如果需要其他功能,可以创建自己的viewrule(如下所述)

1。` params`:要求在requests中提交特定的post params
*kwargs:`params` list
*usage:`@require(params,params=['animal','name'])`

2。` owner`:要求经过身份验证的用户在详细的endpint
*kwargs:`model`django model
*usage:`@require(owner,model=pet)`
*注意:这只在使用默认的'pk'属性的详细端点中有效

3。` owner params`:组合“params”和“owner”条件
*kwargs:`model`django model,`params` list
*usage:`@require(owner,model=pet,params=['animal'])`
*注意:这只在使用默认“pk”属性的详细端点中有效

decorators

1。` require`:接受一个viewrule,它详细描述了api条件和任意数量的关键字值。有关详细信息,请参考viewrule文档。

`` python
期望在post请求中提供animal和name参数
@require(params,params=['animal',name'])
def create(self,请求:
pass

params
@需要所有者(ownerparams,model=pet,params=['name','color'])
def update(self,request,pk=none):
pass
````

为了方便起见,django rest框架中的http状态代码在类的“status”属性中可用,请求对象中的参数在类的“request”属性中可用。

如果不满足特定条件,则所有viewrules都应具有返回json可序列化响应的“enforce”方法。如果不满足条件,则视图集将传递此响应,而不是使用在视图集的操作方法中。

更多状态码:[rest framework状态码](http://www.django-rest-framework.org/api-guide/status-codes/)

`` python
来自django-rest-secureview.view-u-rules-import-viewrule

类mycondition(viewrule):
def-enforce(self,params=none):
self.response(data=notice,status=code)
````


\testing

[tox](https://tox.testrun.org)应该在虚拟环境中运行测试。其他依赖项,如django rest框架,将单独打包到tox的虚拟测试环境中。

`` sh
./运行测试.sh
```

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

推荐PyPI第三方库


热门话题
java如何在安卓 studio中使用调用jaxws web服务的jar文件   java双时间模拟时钟不打印两个不同的时间   java Jackson反序列化处理不带字段的生成值   多线程在java同步中读锁的目的是什么   为什么java中有这么多获取日期时间的方法?   java从listview中的TextView获取数据   java是否可以定义如何对枚举进行(反)序列化以在枚举内持久化?   Java:异常处理我的catch()有问题   VMWare java SDK:可用的PerfMetricID何时不报告数据?   exec在Java中执行命令而不重定向输出   java使用SpringXML配置实现观察者模式?   java在竹笔平板电脑中使用JPen