分享笔记
本课属于 Coddy Django 学习旅程的“用户和账户”单元。第 15 课,共 16 课。
笔记是私密的,大多数笔记确实应该如此。有时你想把一篇笔记分享给朋友,比如食谱或阅读列表。在这节课和下一节课中,你将添加只读分享功能。
是否分享由所有者决定,因此笔记会用 BooleanField 来存储这个设置,值为 True 或 False。除非所有者另有决定,否则新笔记必须保持私密,因此默认值为 False。在 ModelForm 中,BooleanField 会变成一个复选框。
在这里,表单可以设置这个字段,因为这是所有者对自己的笔记所做的选择。owner 则不同,任何表单都不能设置它。
挑战
简单允许所有者分享笔记。
- 在
notes/models.py中,给Note添加一个shared字段:类型为BooleanField,新建笔记时默认值为False。 - 在
notes/forms.py中,将该字段添加到NoteForm,这样所有者就可以勾选它。 - 在
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 在线编辑器