跳转到主要内容

django-friendship 提供了一个易于扩展的接口,用于关注和友情

项目描述

django-friendship

CI

此应用程序使您能够创建和管理用户之间的关注、屏蔽和双向友情。它具有以下功能:

  • 可以接受、拒绝、取消或标记为已查看的友情请求对象。
  • 钩子可以轻松列出给定用户发送或接收的所有友情请求,并按请求状态进行筛选。
  • 每个用户都有一个屏蔽列表,列出他们屏蔽的用户。
  • 标签可以包含有关友情、屏蔽和关注的模板信息。
  • AUTH_USER_MODEL 的集成。
  • 验证以防止常见的错误。
  • 通过缓存提高服务器响应时间

需求

** 从 v1.9.1 版本开始需要 Django 3.2 **

以前: Django 1.11+ 自 v1.7.0 版本以来(支持 Django 1.10 的最新版本是 v1.6.0)

安装

  1. pip install django-friendship
  2. "friendship" 添加到 INSTALLED_APPS 中,并运行 python manage.py migrate
  3. 在您的视图中使用友谊管理器,或将 URLconf 连接到内置视图
urlpatterns = [
    ...
    path('friendship/', include('friendship.urls'))
    ...
]

注意:如果您是从 django-friendship v1.6.x 迁移,您需要回滚迁移并伪造迁移 0002

$ ./manage.py migrate friendship 0001
$ ./manage.py migrate friendship 0002 --fake

如果您是从 v1.7.x 迁移,您可能还需要伪造 0003

$ ./manage.py migrate friendship 0003 --fake

用法

django-friendship 提供了一个免费的 API,让您在视图中以多种方式创建和管理友谊请求或关注。在您的 views.py 顶部添加以下内容:

from django.contrib.auth.models import User
from friendship.models import Friend, Follow, Block

获取友谊数据

  • 列出用户的所有朋友: Friend.objects.friends(request.user)
  • 列出所有未读的友谊请求: Friend.objects.unread_requests(user=request.user)
  • 列出所有未拒绝的友谊请求: Friend.objects.unrejected_requests(user=request.user)
  • 所有未拒绝的友谊请求的数量: Friend.objects.unrejected_request_count(user=request.user)
  • 列出所有拒绝的友谊请求: Friend.objects.rejected_requests(user=request.user)
  • 所有拒绝的友谊请求的数量: Friend.objects.rejected_request_count(user=request.user)
  • 所有已发送的友谊请求的列表: Friend.objects.sent_requests(user=request.user)
  • 测试两个用户是否是朋友: Friend.objects.are_friends(request.user, other_user) == True

获取关注数据

  • 列出用户的所有关注者: Follow.objects.followers(request.user)
  • 列出用户所关注的所有用户: Follow.objects.following(request.user)

获取屏蔽数据

  • 列出用户的所有屏蔽者: Block.objects.blocked(request.user)
  • 列出用户所屏蔽的所有用户: Block.objects.blocking(request.user)
  • 测试用户是否被屏蔽: Block.objects.is_blocked(request.user, other_user) == True

管理友谊和关注

创建友谊请求

other_user = User.objects.get(pk=1)
Friend.objects.add_friend(
    request.user,                               # The sender
    other_user,                                 # The recipient
    message='Hi! I would like to add you')      # This message is optional

让收到请求的用户进行回应

from friendship.models import FriendshipRequest

friend_request = FriendshipRequest.objects.get(from_user=request.user, to_user=other_user)
friend_request.accept()
# or friend_request.reject()

要删除 request.userother_user 之间的友谊关系,请执行以下操作:

Friend.objects.remove_friend(request.user, other_user)

使 request.user 成为 other_user 的关注者

Follow.objects.add_follower(request.user, other_user)

使 request.user 屏蔽 other_user

Block.objects.add_block(request.user, other_user)

使 request.user 取消屏蔽 other_user

Block.objects.remove_block(request.user, other_user)

模板

您可以在模板中使用 django-friendship 标签。首先输入

{% load friendshiptags %}

然后使用以下任何一项:

{% friends request.user %}
{% followers request.user %}
{% following request.user %}
{% friend_requests request.user %}
{% blockers request.user %}
{% blocking request.user %}

信号

django-friendship 发射以下信号

  • friendship_request_created
  • friendship_request_rejected
  • friendship_request_canceled
  • friendship_request_accepted
  • friendship_removed
  • follower_created
  • following_created
  • follower_removed
  • following_removed
  • block_created
  • block_removed

贡献

开发 在 GitHub 上进行。错误报告、补丁和修复总是受欢迎的!

需要帮助?

REVSYS 可以帮助您处理 Python、Django 和基础设施项目。如果您对这个项目有任何疑问,请打开 GitHub 问题。如果您喜欢我们并想跟踪我们的动态,您可以在以下位置找到我们

项目详细信息


下载文件

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

源代码分发

django_friendship-1.9.6.tar.gz (21.1 kB 查看哈希值)

上传时间 源代码

构建分发

django_friendship-1.9.6-py2.py3-none-any.whl (35.6 kB 查看哈希值)

上传时间 Python 2 Python 3

支持者