django用户使用tastype的restful api。

django-users-api的Python项目详细描述


https://travis-ci.org/mohabusama/django-users-api.svg?branch=master

django用户使用Tastypie的restful api。这个django应用程序提供restful接口:

安装

pip install django-users-api

或克隆回购

python setup.py install

开发

运行测试:

$ virtualenv venv
$ . venv/bin/activate
$ pip install -r requirements.txt
$ python setup.py test

集成

您可以通过各种方式将django users api应用程序集成到django应用程序中。

urlconfig(默认值)

django users api默认url添加到项目url。在下面的示例中,我们将包含前缀为“auth/”的users\u api.url

在项目url.py中:

from django.conf.urls import patterns, include, url

urlpatterns = patterns(
    '',
    # ...,
    url(r'^auth/', include('users_api.urls')),
    # ...
)

users\u api可以通过以下方式访问url:

/auth/users/
/auth/groups/
/auth/permissions/
...

选定资源

在某些情况下,您可能需要从项目url中排除一些资源。在这种情况下,您必须自己添加所需的资源。

假设您只需要usersresource可用(即不包括groupsresource&;permissionsresource

在项目url.py中:

from django.conf.urls import patterns, include, url

from users_api.common import UsersApi
from users_api.api.users import UsersResource

django_users_api = UsersApi()
django_users_api.register(UsersResource())

urlpatterns = patterns(
    '',
    # ...
    url(r'', include(django_users_api.urls)),
    # ...
)

usersresourceURL将通过以下途径访问:

/users/

资源

用户资源

django.contrib.auth.models.user的Tastypie模型资源。

get

  • 列出所有用户:/users/
  • 列出用户1:/users/1/

用户json响应示例:

{
    "dateJoined": "2014-12-24T13:04:36",
    "email": "admin@admin.com",
    "firstName": "",
    "isActive": true,
    "isStaff": true,
    "isSuperuser": true,
    "lastLogin": "2015-01-03T14:19:41.060600",
    "lastName": "",
    "resourceUri": "/users/1/",
    "username": "admin"
}

post

  • 创建新用户:/users/

important:创建用户需要一个password字段与数据一起提交。

用户json请求负载示例:

{
    "email": "new-user@admin.com",
    "firstName": "New",
    "lastName": "User",
    "username": "new_user"
    "password": "us3rP@sswd"
}

put

    更新现有用户:^ {TT2}$

提交密码字段将更改用户密码。

删除

    删除现有用户:^ {TT5}$$/LI>

组资源

django.contrib.auth.models.group的Tastypie模型资源。

get

  • 列出所有组:/groups/
  • 列表组1:/groups/1/
  • 列出用户1组:/users/1/groups/

组json响应示例:

{
    "name": "Group name",
    "resourceUri": "/groups/1/"
}

post

  • 创建新组:/groups/

组json请求负载示例:

{
    "name": "HR Group"
}

put

  • 更新现有组:^ {TT7}$$/LI>
  • 将组1分配给用户1:/users/1/groups/1/

删除

    删除现有组:^ {TT12}$
  • 从用户1中删除组1:/users/1/groups/1/

许可证来源

django.contrib.auth.models.permission的Tastypie模型资源。

get

  • 列出所有权限:/permissions/
  • 列表权限1:/permissions/1/
  • 列出用户1权限:/users/1/permissions/
  • 列出组1权限:/groups/1/permissions/

权限json响应示例:

{
    "codename": "add_logentry",
    "contentTypeUri": "/contenttypes/1/",
    "name": "Can add log entry",
    "resourceUri": "/permissions/1/"
}

post

  • 创建新权限:/permissions/

important:有效的权限应该通过contenttypeuri字段引用有效的contenttype(请参见ContentTypesResource)。

权限json请求负载示例(假设我们有一个blog模型):

{
    "codename": "add_blog",
    "contentTypeUri": "/contenttypes/20/",
    "name": "Can add new blog",
}

put

  • 更新现有权限:^ {TT15}$$/LI>
  • 将权限1分配给用户1:/users/1/permissions/1/
  • 将权限1分配给组1:/groups/1/permissions/1/

删除

    删除现有权限:^ {TT22}$$/LI>
  • 从用户1中删除权限1:/users/1/permissions/1/
  • 从组1中删除权限1:/groups/1/permissions/1/

内容nttypesresource

用于django.contrib.auth.models.contenttype的只读tastype modelresource。

get

  • 列出所有内容类型:/contenttypes/
  • 列表内容类型1:/contenttypes/1/

ContentType JSON响应示例:

{
    "appLabel": "admin",
    "model": "logentry",
    "name": "log entry",
    "resourceUri": "/contenttypes/1/"
}

身份验证

默认情况下,所有资源都使用tastypeSessionAuthentication

授权

默认情况下,所有资源都使用tastypeDjangoAuthorization

important:djangauthorization为所有用户提供read访问,这可能不是所需的行为。

延长

django users api资源基于tastypeModelResource class,这使您能够扩展和重写任何users\u api资源。

许可证

MIT License

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

推荐PyPI第三方库


热门话题
java InputStream对象在声明后关闭   java未定义名为“transactionManager”的bean重命名transactionManager   java“jar”命令何时会拒绝将类添加到java中。jar文件?   java JPA标准依赖WHERE子句   安卓中从SD卡读取文本文件时出现java错误   java直接启用类似位置的权限   使用@WebMvcTest和Mockito-BDDMockito对SpringBoot-RestController进行java测试   java JSESSIONID存储在哪里?   java jtextarea鼠标事件覆盖容器鼠标事件   java DRL无法解析动态加载的类   java是从一个方法返回多个对象的最简单方法   java自定义按钮/编辑框是否不可见?   java GUI如何在保存用户输入的同时在面板或框架之间切换   swing Java自定义JSlider不会更新   GridBagLayout中的java超过1个JPanel   java从ProjectReactor中的flux中采样除第一个元素外的所有元素   Java泛型和泛型类型   Java代码生成宽指令的jvm