Menu
CoddyTech

分享笔记

本课属于 Coddy Django 学习旅程的“用户和账户”单元。第 15 课,共 16 课。

笔记是私密的,大多数笔记确实应该如此。有时你想把一篇笔记分享给朋友,比如食谱或阅读列表。在这节课和下一节课中,你将添加只读分享功能。

是否分享由所有者决定,因此笔记会用 BooleanField 来存储这个设置,值为 True 或 False。除非所有者另有决定,否则新笔记必须保持私密,因此默认值为 False。在 ModelForm 中,BooleanField 会变成一个复选框。

在这里,表单可以设置这个字段,因为这是所有者对自己的笔记所做的选择。owner 则不同,任何表单都不能设置它。

challenge icon

挑战

简单

允许所有者分享笔记。

  1. 在 notes/models.py 中,给 Note 添加一个 shared 字段:类型为 BooleanField,新建笔记时默认值为 False。
  2. 在 notes/forms.py 中,将该字段添加到 NoteForm,这样所有者就可以勾选它。
  3. 在 note_detail.html 中,仅当笔记已分享时才显示 Anyone with the link can read this note.。

以 ada 身份登录(密码为 coddy-pass-123),在一条笔记上勾选 Shared 并保存:笔记页面会显示 Anyone with the link can read this note.

亲手试试

from django.conf import settings
from django.db import models


class Note(models.Model):
    owner = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name="notes")
    title = models.CharField(max_length=100)
    body = models.TextField(blank=True)
    created = models.DateTimeField(auto_now_add=True)

    class Meta:
        ordering = ["-created"]

    def __str__(self):
        return self.title

用户和账户中的所有课

自己练习: Django 在线编辑器