1

我正在编写一个 Django 应用程序,并且我希望在本地创建帐户时使用 Provisioning API 在我们的 Google Apps 托管电子邮件上创建一个帐户。

我只会使用信号,但由于我希望跨站点同步密码,所以我已经做了猴子补丁User.objects.create_userUser.set_password使用包装器来分别创建 Google 帐户和更新密码。

Monkeypatching 似乎不受欢迎,所以我想知道,有没有更好的方法来做到这一点?

4

4 回答 4

1

您是否考虑过对 User 模型进行子类化?这可能会产生一组不同的问题,并且仅适用于较新的版本(不确定更改何时生效,我在主干上)。

于 2009-03-03T05:08:58.583 回答
0

猴子补丁绝对是坏事。很难说什么,因为你给出的代码/信息太少了。但是我假设您在某些时候(在视图中,在表单中)有明文密码,那么为什么不手动同步呢?

于 2009-06-06T05:02:04.623 回答
0

只要您可以更改所有代码以使用新类,子类化似乎是最佳途径。我认为最新版本的 Django 支持这一点。

于 2009-04-15T00:28:07.620 回答
0

我使用 Django 1.0.2 子类化用户。您基本上创建了另一个链接到 user_id 的表。

class User(MyBaseModel):
    user = models.OneToOneField(User, help_text="The django created User object")

然后在运行时

@login_required
def add(request) :
    u = request.user.get_profile()

然后,您可以轻松地覆盖所需的方法。

对于那些没有听说过猴子补丁的人:http ://en.wikipedia.org/wiki/Monkey_patch 。它是从游击补丁派生的。

于 2009-07-21T07:56:22.283 回答