Skip to main content

dj_auth 的目标是限制某些用户对您的 django 项目的数据访问。

项目描述

dj_auth

https://badge.fury.io/py/dj_auth.png

https://gitlab.com/systent/dj_auth/badges/master/build.svg https://gitlab.com/systent/dj_auth/badges/master/coverage.svg

dj_auth 的目标是限制某些用户对您的 django 项目的数据访问。

要求

Django 1.9

快速开始

安装 dj_auth:

pip install dj_auth

将 dj_auth 放入设置模块的 INSTALLED_APPS 中:

INSTALLED_APPS = (
   ...
   'dj_auth',
)

通过运行创建 dj_auth 数据库表:

python manage.py migrate

扩展模型的 Queryset 方法:

from django.db import models

from dj_auth.models import ObjectFilterQuerySetMixin

class YourModelQuerySet(ObjectFilterQuerySetMixin, models.QuerySet):

    def sichtbar(self, sichtbar=True):
        return self.filter(sichtbar=sichtbar)


class YourModel(models.Model):
    your_fielfs = models.SmallIntegerField()

    objects = YourModelQuerySet.as_manager()

在 settings.py 中设置 DJ_AUTH 常量:

DJ_AUTH = {'content_type_exclude': ('contenttypes.contenttype', 'sessions.session', 'sites.site',
                                    'auth.user', 'auth.group', 'auth.permission', 'admin.logentry',
                                    'dj_auth.objectfilter',),
           'content_type_include': (),
           'global_fields_exclude':  ('user', ),
           'related_filter_fields_exclude': {'auth.user': ('groups', ), },
           }

在“content_type_exclude”中,您放置您不想在其上创建 ObjectFilters 的模型

在“content_type_include”中,您放置要在其上创建 ObjectFilters 的模型

在“global_fields_exclude”中,您将不想全局应用 ObjectFilter 的字段名

在“related_filter_fields_exclude”中,您可以将不想为特定模型应用 ObjectFilter 的字段名

特征

ObjectFilterFormMixin

首先,您必须为特定用户创建一个 ObjectFilter 记录。因此,您应该使用 ObjectFilterFormMixin:

from django import forms

from dj_auth.forms import ObjectFilterFormMixin

class ObjectFilterForm(ObjectFilterFormMixin, forms.ModelForm):
    pass

ObjectFilterListMixin

要限制 ListView 中的数据,请使用 ObjectFilterListMixin:

from django.views.generic import ListView
from django.contrib.auth import get_user_model

from dj_auth.views import ObjectFilterListMixin

class UserListView(ObjectFilterListMixin, ListView):
    model = get_user_model()

ObjectFilterDetailMixin

要限制 DetailView 中的数据,请使用 ObjectFilterDetailMixin:

from django.views.generic import DetailView
from django.contrib.auth import get_user_model

from dj_auth.views import ObjectFilterDetailMixin

class UserDetailView(ObjectFilterDetailMixin, DetailView):
    model = get_user_model()

ObjectFilterUpdateMixin

要限制 UpdateView 中的数据,请使用 ObjectFilterUpdateMixin:

from django.views.generic import UpdateView
from django.contrib.auth import get_user_model

from dj_auth.views import ObjectFilterUpdateMixin

class UserDetailView(ObjectFilterUpdateMixin, UpdateView):
    model = get_user_model()

ObjectFilterDeleteMixin

要限制 UpdateView 中的数据,请使用 ObjectFilterDeleteMixin:

from django.views.generic import DeleteView
from django.contrib.auth import get_user_model

from dj_auth.views import ObjectFilterDeleteMixin

class UserDetailView(ObjectFilterDeleteMixin, DeleteView):
    model = get_user_model()

去做

运行测试

代码真的有效吗?

source <YOURVIRTUALENV>/bin/activate
(myenv) $ pip install -r requirements_test.txt
(myenv) $ coverage run --source=dj_auth runtests.py && coverage html

学分

用于渲染此包的工具:

历史

0.1.0 (2016-07-29)

  • PyPI 上的第一个版本。

下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

dj_auth-1.5.1.tar.gz (12.2 kB 查看哈希)

已上传 source

内置分布

dj_auth-1.5.1-py2.py3-none-any.whl (16.1 kB 查看哈希

已上传 py2 py3