【实战演练】python社交网络应用:好友关系与消息系统
发布时间: 2024-06-27 14:35:05 阅读量: 77 订阅数: 120
用Python交朋友
![【实战演练】python社交网络应用:好友关系与消息系统](https://img-blog.csdnimg.cn/img_convert/cb59f0af383db85a0da4b3c78c7d0c7b.png)
# 2.1 好友关系的建立与解除
### 2.1.1 添加好友
**添加好友接口:**
```python
def add_friend(user_id1, user_id2):
"""
添加好友关系
Args:
user_id1 (int): 用户1 ID
user_id2 (int): 用户2 ID
"""
# 检查用户是否存在
if not User.objects.filter(id=user_id1).exists():
raise ValueError("用户1不存在")
if not User.objects.filter(id=user_id2).exists():
raise ValueError("用户2不存在")
# 检查好友关系是否已存在
if FriendRelation.objects.filter(user1_id=user_id1, user2_id=user_id2).exists():
raise ValueError("好友关系已存在")
# 创建好友关系
FriendRelation.objects.create(user1_id=user_id1, user2_id=user_id2)
```
### 2.1.2 删除好友
**删除好友接口:**
```python
def delete_friend(user_id1, user_id2):
"""
删除好友关系
Args:
user_id1 (int): 用户1 ID
user_id2 (int): 用户2 ID
"""
# 检查用户是否存在
if not User.objects.filter(id=user_id1).exists():
raise ValueError("用户1不存在")
if not User.objects.filter(id=user_id2).exists():
raise ValueError("用户2不存在")
# 检查好友关系是否存在
if not FriendRelation.objects.filter(user1_id=user_id1, user2_id=user_id2).exists():
raise ValueError("好友关系不存在")
# 删除好友关系
FriendRelation.objects.filter(user1_id=user_id1, user2_id=user_id2).delete()
```
# 2. 好友关系管理
### 2.1 好友关系的建立与解除
#### 2.1.1 添加好友
**功能描述:**
添加好友功能允许用户向其他用户发送好友请求,并建立好友关系。
**实现步骤:**
1. 用户 A 向用户 B 发送好友请求。
2. 用户 B 收到好友请求,可以接受或拒绝。
3. 如果用户 B 接受请求,则在用户 A 和用户 B 之间建立好友关系。
**代码示例:**
```python
def add_friend(user_id_a, user_id_b):
"""
添加好友关系
:param user_id_a: 用户 A 的 ID
:param user_id_b: 用户 B 的 ID
"""
# 检查用户是否存在
if not user_exists(user_id_a) or not user_exists(user_id_b):
raise ValueError("用户不存在")
# 检查是否已经是好友
if is_friend(user_id_a, user_id_b):
raise ValueError("已经是好友")
# 添加好友关系
friend_request = FriendRequest(user_id_a, user_id_b)
friend_request.save()
```
**逻辑分析:**
* `user_exists()` 函数检查用户是否存在。
* `is_friend()` 函数检查两个用户是否已经是好友。
* `FriendRequest` 类表示好友请求,`save()` 方法将请求保存到数据库。
#### 2.1.2 删除好友
**功能描述:**
删除好友功能允许用户解除与其他用户的好友关系。
**实现步骤:**
1. 用户 A 向用户 B 发送删除好友请求。
2. 用户 B 收到请求,可以接受或拒绝。
3. 如果用户 B 接受请求,则删除用户 A 和用户 B 之间的好友关系。
**代码示例:**
```python
def remove_friend(user_id_a, user_id_b):
"""
删除好友关系
:param user_id_a: 用户 A 的 ID
:param user_id_b: 用户 B 的 ID
"""
# 检查用户是否存在
if not user_exists(user_id_a) or not user_exists(user_id_b):
raise ValueError("用户不存在")
# 检查是否已经是好友
if not is_friend(user_id_a, user_id_b):
raise ValueError("不是好友")
# 删除好友关系
friend_request = FriendRequest.objects.get(user_id_a=user_id_a, user_id_b=user_id_b)
friend_request.delete()
```
**逻辑分析:**
* `objects.get()` 方法从数据库中获取满足条件的第一个对象。
* `delete()` 方法删除对象。
### 2.2 好友关系的查询与管理
#### 2.2.1 好友列表查询
**功能描述:**
好友列表查询功能允许用户获取自己的好友列表。
**实现步骤:**
1.
0
0