Django Rest框架的逐字段序列化程序权限。

django-rest-serializer-field-permissions的Python项目详细描述


[![构建状态](https://travis-ci.org/intersis/django-rest-serializer-field-permissions.svg?branch=master)(https://travis ci.org/intersis/django rest serializer字段权限)
[![代码气候](https://codeculate.com/github/intersis/django rest serializer field permissions/badges/gpa.svg)(https://codeculate.com/github/intersis/django rest serializer field permissions)
[![覆盖状态](https://workalls.io/repos/intersis/django-rest-serializer-field-permissions/badge.svg?branch=master&service=github](https://coveralls.io/github/intersis/django-rest-serializer-field-permissions?分支=主)
[![PYPI版本](https://badge.fury.io/py/django rest serializer field permissions.svg)](http://badge.fury.io/py/django rest serializer field permissions)


django rest serializer field permissions
==

如下所示:

```
类PersonSerializer(FieldPermissionSerializerMixin,LookupModelSerializer):

///仅允许经过身份验证的用户检索系列和给定名称
系列名称=序列化器.charfield(Permission类=(IsAuthenticated(),)
Given_names=serializers.charfield(权限类=(isauthenticated(),))


///允许所有用户检索昵称
nick_name=serializers.charfield(权限类=(allow all(),)

````

基于[DRF 3.8文档](https://github.com/encode/django rest framework/tree/2c992f09dada037904efe076029cd7355118d37f)中的示例django rest framework api构建。请确保在开始此教程之前已完成该教程。

将此模块安装到您的环境中:

`````
$pip install django rest serializer field permissions
````

将此模块添加到您的"已安装的应用程序"中,将其安装到django中。
```
已安装的应用程序=(

‘rest_framework_serializer_field_permissions’,


````

现在可以将检索权限添加到各个字段。必须导入下面所示的模块和类,将"fieldpermissionserializermixin"作为**最左边的**父级混合到序列化程序中,然后使用提供的下拉字段类定义字段。

例如,使用允许代码:

```
from django.conf.url导入url,include
from django.contrib.auth.models导入用户
from rest_framework导入路由器、序列化程序、视图集

from rest_framework序列化程序字段权限导入字段--
从rest_framework_serializer_field_permissions.serializer导入fieldpermissionserializerMixin<;--
从rest_framework_serializer_field_permissions.permissions导入是经过身份验证的<;--

序列化程序(fieldPermissionSerializerMixin,serializers.hyperlinkedModelSerializer):35;<;--
类元:
模型=用户
字段=("url"、"用户名"、"电子邮件"、"IS员工")


电子邮件=字段。emailfield(权限类=(isAuthenticated(),)#<;--

视图集定义视图行为。
类userviewset(viewsets.modelviewset):
queryset=user.objects.all()
序列化器类=user serializer

路由器提供了一种简单的自动确定url配置的方法。
router=routers.defaultrouter()
router.register(r'users,userviewset)

使用自动url路由连接我们的api。
此外,我们还包括可浏览api的登录url。
urlpatterns=[
url(r'^',include(router.url)),
url(r'^api auth/',include('rest_framework.urls',namespace='rest_framework'))
]

````


现在,只有经过身份验证的用户才能检索用户的电子邮件。如果您还没有创建超级用户帐户,则可以通过创建超级用户帐户来确认这一点,并以经过身份验证的用户和未经身份验证的访问者身份访问[http://localhost:8000/users/](http://localhost:8000/users)。

ields.charfield(权限类=(isauthenticated(),)
```







>在您的python发行版或virtualenv中安装模块:



$pip install django rest serializer字段权限




>将应用程序添加到您的"已安装的应用程序"中:

````
>已安装的应用程序=(








```




<

<
<
乙r/>在序列化程序中添加权限

,将"fieldpermissionserializermixin"作为最左边的父级混合到序列化程序类中。字段
由"rest_framework_serializer_field_permissions"提供。字段"accept"permission_classes"以典型的
drf方式操作:

````
rest_framework import serializer

from rest_framework_serializer_field_permissions import fields
from rest_framework_field_permissions.serializers从rest\u framework\u serializer\u field\u permissions导入fieldpermissionserializer
/>email=fields.emailfield(权限类=(isauthenticated(),)

````


----

"fieldpermissionserializermixin"提供自己的"fields"属性,drf序列化程序调用该属性以获取自己字段的列表。修改后的"fields"属性检查带有权限的字段,强制它们根据请求检查自己的
权限,并从返回的字段中清除任何未通过权限检查的字段。

compatibility
----


*django rest framework 3.8
*django 1.11,2.1
*python 2.7,3.7


请参阅tox.ini对于测试的特定次要版本。

[github](https://github.com/intersis/django-rest-serializer-field-permissions)是此项目的规范位置。

在[Issue Tracker]中打开问题(https://github.com/intersis/django rest serializer field permissions/issues/)。
2.按任意顺序:
*提交一个带有**失败**测试的请求,该测试演示问题/功能。
*获取确认/并发。
3。在(2)中提交通过测试的拉取请求。包括文档,如果合适的话。

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

推荐PyPI第三方库


热门话题
Java类之间并发性不一致的HashMap   插件如何在JavaSwing中使用UIManager和Classloader从外部jar安装外观?   java JasperReports:找不到子报表   在项目中找不到java生成的Javadoc文件   java BigDecimal。multiply()和divide()方法返回十六进制数。为什么?   java统计出现次数并从字符串中删除重复项   调用运算符时发生java NullPointerException   Spring和Hibernate之间的java配置错误   JavaZK将用户重定向回上一页   Javasocket为传出连接指定特定的网络接口   如果拖动到某个区域外,java Make按钮操作将被取消   如何在Eclipse for selenium 3.141.59中添加Java文档链接   java从匹配条件的数组中获取所有索引   docker未连接到RemoteWebDriver的java Gitlab ci selenium测试   java重写run方法   utf 8如何使用java解码UTF8编码的字符串?   java如何从eclipse调试部署在tomcat上的web应用程序?   将字母字符与前面没有百分号的Java正则表达式匹配