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)

安装

  1. pip install django-friendship
  2. "friendship"添加到INSTALLED_APPS并运行python manage.py migrate
  3. 在您自己的视图中使用友谊管理器,或连接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.userother_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问题。如果您爱我们,并想了解我们的动态,可以在这里在线找到我们:

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

推荐PyPI第三方库


热门话题
实现接口方法时不允许java@Override   使用BuffereImage加载映像时java高ram使用率   java For循环混乱,为什么不是循环?   java Android网格视图字符串对齐问题   java如何将方法与比较类型的附加功能进行比较?   在Java Swing中放置JSepator后的间隙大小   java如何避免并发访问我的网站中的支付链接   java如何从现有的Unix服务器连接到FTP服务器?   Spring中的java用户相关bean定义   带有scribesjava库的wordpress Woocommerce REST API返回消费者密钥参数缺失错误消息   java我可以自动检测特定设备连接的串行端口吗?   Javafx棋盘游戏   java使用JTextPane显示HTML,支持SVG吗?   SpringBoot如何在java中将映射转换为实体对象?   如何使用java代码对xls文件进行密码保护   Java JPA(EclipseLink)如何在持久化实际实体之前接收下一个生成的值?   Javaservlet启动外部进程