django-friendship 提供了一个易于扩展的接口,用于关注和友情
项目描述
django-friendship
此应用程序使您能够创建和管理用户之间的关注、屏蔽和双向友情。它具有以下功能:
- 可以接受、拒绝、取消或标记为已查看的友情请求对象。
- 钩子可以轻松列出给定用户发送或接收的所有友情请求,并按请求状态进行筛选。
- 每个用户都有一个屏蔽列表,列出他们屏蔽的用户。
- 标签可以包含有关友情、屏蔽和关注的模板信息。
- 与
AUTH_USER_MODEL
的集成。 - 验证以防止常见的错误。
- 通过缓存提高服务器响应时间
需求
** 从 v1.9.1 版本开始需要 Django 3.2 **
以前: Django 1.11+ 自 v1.7.0 版本以来(支持 Django 1.10 的最新版本是 v1.6.0)
安装
pip install django-friendship
- 将
"friendship"
添加到INSTALLED_APPS
中,并运行python manage.py migrate
。 - 在您的视图中使用友谊管理器,或将 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.user
和 other_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 查看哈希值)
构建分发
关闭
哈希值 for django_friendship-1.9.6-py2.py3-none-any.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | babc1ef3c9775fbf8281ea70f74396ea6fff919b311b7be25001dbbcbcd91219 |
|
MD5 | 1be2a40aa89b174a7f6aea19ea33cb2c |
|
BLAKE2b-256 | caa0a7dbdeb2d4ad9b28e81f6947bb55602d60013a89b92cc56f4cb4e126c87b |