我正在使用Django的用户帐户管理系统来创建帐户和登录/注销用户。我遇到麻烦的地方是弄清楚在哪里以及如何保存我的网站为每个用户创建的用户文档。
我的网站的目的是为学生正确格式化学校文件。他们需要在自己的账户上访问这些创建的文档。
现在,我倾向于使用Amazon S3 web服务来存储文档。如何将文件"附加"给用户并允许他们访问?我考虑过使用用户的电子邮件来查找他们的文档,但意识到如果他们更改了电子邮件,那么他们将无法访问这些文档。如果这有道理的话……
请不要认为这个问题是基于意见的,而是基于"如何做"的。任何答案都很感激。
谢谢,
我实现这一点的方法是使用一个单独的模型来表示用户应该有权访问的文档。这个模型将包含:
- a设置的外键。li>在S3上找到的文件路径(可以是一个完整的URL,或者只是前缀/键细节,可以根据设置构建一个完整的URL(例如,如果您最终改变存储提供商并将所有数据从S3迁移到Rackspace云,那么更改设置比在数据库中搜索数十万条记录和更新URL要容易得多)。如果您使用django-storage,它们会提供FileField模型字段,它可以半自动地为您完成此操作,并且还可以处理文件本身上传到指定的S3位置。还可以根据需要支持其他文件存储后端。
- 一些描述的文档名称/注释/标题字段
- a创建/最后修改的时间戳…因为这就是我的风格。
如果这个模型被称为"文档",那么您将能够通过user.document_set.all()
访问属于用户的所有文档(我将user
外键上的related_name
设置为documents
,以便更好地设置为user.documents.all()
)。如果用户更改了他们的电子邮件地址,那也没关系,因为我们在用户模型中使用了数据库的主键。