重构: 15天课程体系(从零到Django), 每题先学后做30分钟
This commit is contained in:
@@ -1,58 +0,0 @@
|
||||
# Day_4 · 面向对象(一):从 class User 开始
|
||||
|
||||
> Django 最核心的能力是 **ORM**:你定义类,Django 帮你管理数据库表。
|
||||
> 打开任何 Django 项目,第一行几乎都是 `class Article(models.Model):`——
|
||||
> 这一行的背后,是整片面向对象的大海。
|
||||
> 今天我们从最小的一步开始:**类和实例**。
|
||||
|
||||
## 今日知识点 → 以后在 Django 里对应什么
|
||||
|
||||
| 今天练的 | 以后在 Django 里会看到 |
|
||||
| --- | --- |
|
||||
| 类定义 + 类属性 | `class Article(models.Model)`,字段就是类属性 |
|
||||
| `__init__` / 实例方法 | Model 实例的构造、`.save()` / `.delete()` |
|
||||
| `__str__` / `__repr__` 魔法方法 | Admin 后台显示的名称、QuerySet 打印结果 |
|
||||
|
||||
---
|
||||
|
||||
## 题目(必做):设计一个 User 类
|
||||
|
||||
**背景**:Django 里定义一个用户模型只需要三行:
|
||||
|
||||
```python
|
||||
class User(models.Model):
|
||||
name = models.CharField(max_length=50)
|
||||
email = models.EmailField()
|
||||
```
|
||||
|
||||
看起来像魔法,其实核心就是"类 + 类属性"。今天我们不用 Django,用纯 Python 复刻 User 类。
|
||||
|
||||
**要求**:
|
||||
|
||||
1. 类属性 `all_users = []`(模拟数据库表,用来存所有创建出来的用户)
|
||||
2. `__init__(self, name, email, age)`:把三个参数存成实例属性,并把 `self` 追加进 `all_users`
|
||||
3. 实例方法 `get_full_name()`:返回 `用户:<name>(<email>)`
|
||||
4. 魔法方法 `__str__(self)`:返回 `self.name`(Django admin 后台显示的就是它!)
|
||||
5. 魔法方法 `__repr__(self)`:返回 `User(name='zhangsan', email='zs@163.com', age=20)`
|
||||
这种"能还原出原对象"的格式
|
||||
|
||||
**验证**:
|
||||
|
||||
- 创建 3 个用户,打印 `User.all_users`
|
||||
- 分别 `print` 每个用户(会触发 `__str__`)
|
||||
- 用 `eval(repr(u1))` 还原出 u1 的信息,确认内容一致
|
||||
|
||||
**思考题(写在注释里)**:`__str__` 和 `__repr__` 到底有什么区别?
|
||||
(提示:一个是"给人看的",一个是"给开发者调试看的"——具体从使用场景和返回值要求去想。)
|
||||
|
||||
**出题意图**:Django Model 就是"类 + 字段",实例方法和 `__str__` 是每个模型都会写的东西。
|
||||
把这一题吃透,`class Article(models.Model)` 对你来说就不再是黑魔法。
|
||||
|
||||
---
|
||||
|
||||
## 完成标准
|
||||
|
||||
- [ ] User 类全流程跑通(创建 / 打印 / 还原)
|
||||
- [ ] 想通了 `__str__` 和 `__repr__` 的区别
|
||||
|
||||
完成后打开 `参考解答.py` 对照。建议看完后关掉文件,自己再默写一遍。
|
||||
Reference in New Issue
Block a user