django friends为following和friends提供了一个易于扩展的接口
django-friendship的Python项目详细描述
Django友谊
此应用程序使您能够创建和管理用户之间的follow、block和双向友谊。它的功能:
- 可以接受、拒绝、取消或标记为已查看的友谊请求对象。
- 钩子可以方便地列出给定用户发送或接收的所有好友请求,并根据请求的状态进行筛选。
- 每个被阻止用户的阻止列表。
- 在模板中包含有关友谊、块和后续内容的信息的标记。
- 与
AUTH_USER_MODEL
集成。 - 验证以防止常见错误。
- 通过缓存加快服务器响应时间
要求
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=[...url(r'^friendship/',include('friendship.urls'))...]
注意:如果您是从django friendsv1.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
的顶部添加以下内容:
fromdjango.contrib.auth.modelsimportUserfromfriendship.modelsimportFriend,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
获取关于follows
的数据- 用户的关注者列表:
Follow.objects.followers(request.user)
- 用户的列表如下:
Follow.objects.following(request.user)
获取数据块
- 用户的阻止程序列表:
Block.objects.blockers(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 senderother_user,# The recipientmessage='Hi! I would like to add you')# This message is optional
让接收请求的用户响应:
fromfriendship.modelsimportFriendshipRequestfriend_request=FriendshipRequest.objects.get(to_user=1)friend_request.accept()# or friend_request.reject()
要删除request.user
和other_user
之间的友谊关系,请执行以下操作:
Friend.objects.remove_friend(request.user,other_user)
提出请求。用户是其他用户的追随者:
Follow.objects.add_follower(request.user,other_user)
发出请求。用户阻止其他用户:
Block.objects.add_block(request.user,other_user)
发出请求。用户取消阻止其他用户:
Block.objects.remove_block(request.user,other_user)
模板
您可以在模板中使用django-friendship
标记。首先输入:
{%loadfriendshiptags%}
然后使用下列任一方法:
{%friendsrequest.user%}{%followersrequest.user%}{%followingrequest.user%}{%friend_requestsrequest.user%}{%blockersrequest.user%}{%blockingrequest.user%}
信号
django-friendship
发出以下信号:
- 友情请求已创建
- 友谊请求被拒绝
- 友谊请求已取消
- 接受友谊请求
- 友谊已删除
- 创建跟随者
- 创建以下单元
- 从动件已拆下
- 移除后的u
- 已创建块
- 块已移除
贡献
开发[在github上进行]https://github.com/revsys/django-friendship)错误报告、补丁和修复总是受欢迎的!
需要帮助吗?
REVSYS可以帮助您完成python、django和基础设施项目。如果您对这个项目有疑问,请打开一个github问题。如果您爱我们,并想了解我们的动态,可以在这里在线找到我们: