2

我正在一个人们创建文章的 Django 网站上工作。我希望人们能够在注册过程中创建一篇文章。以下是步骤:

  1. 用户在没有注册或登录的情况下点击“创建文章”。
  2. 用户被引导到显示用于创建文章的表单的“创建文章”页面。
  3. 点击“创建文章”表单上的“提交”按钮后,用户被重定向到注册/登录页面。
  4. 在注册过程或登录后,文章将保存在用户 ID 下。

我对 Django 很陌生,所以就我而言,这里有一些并发症:

  • 在登录过程之后,我是否以 AnonymousUser 作为作者保存对象?我如何再次找到该对象,以便在用户登录或注册后将其保存给用户?AnonymousUser 对象中是否有任何类型的唯一标识符?

  • 我是否应该使用 URL 将对象通过注册过程,直到注册发生(然后保存)?如何做到这一点?

4

2 回答 2

2

有几种方法可以做你想做的事。我会将用户从您的创建文章表单中排除,并将用户设置为空白 = True,null = True。

您是否只是在创建用户之前将文章保留在会话中,还是将其保存到数据库并在之后分配用户,这完全取决于您。

在会话中保留它的一个好处是,如果用户放弃注册过程,您在数据库中没有记录。我建议采用这种方式,因为它很容易做到,而且如果用户放弃会话,你不需要任何逻辑来清理你的数据库。

要专门回答您关于匿名用户的问题……不,匿名用户没有唯一标识符。您可以在 Django 中使用会话在视图之间持久化对象。

于 2013-02-25T02:08:22.870 回答
1

“我是否应该使用 URL 将对象通过注册过程,直到注册完成(然后保存它)?如何做到这一点?”

您提出的上述建议是更好的解决方案,但不要将其传递给 url。有两种方法可以成功地做到这一点。

  1. 您可以通过会话变量传递对象,这样就不会有人注意到它,而是将其传递给 url。
  2. 您可以确定必须通过其 IP 地址获取哪些对象。
于 2013-02-25T02:18:08.197 回答