2

以前我一直在使用一些旧版本的 django-registration,现在似乎已弃用。因为我的服务器不允许我安装 python 插件,所以我需要使用“注册”作为单独的 django 应用程序。现在我的问题是我需要修改什么才能让注册作为 django-app 运行?我可以将“注册”复制到我的 django 项目目录中,将其添加到设置中并且它应该可以工作吗?以前没有定义“后端”之类的东西,现在带有函数 get_backend 的后端初始化文件,它以“路径”作为参数。我猜这条路径是通过 url 发送的,对吗?

       url(r'^activate/(?P<activation_key>\w+)/$',
           activate,
           {'backend': 'registration.backends.default.DefaultBackend'},
           name='registration_activate'),

在这个目录中还有一个带有 DefaultBackend 类的初始化文件,其中类激活和注册。

http://paste.pocoo.org/show/225790/

他们都使用信号。我需要以任何方式打扰这些信号吗?(我仍然不太明白它们的用途)。最后一件事。之前注册后,它会以这种方式重定向给定的success_url或设置模板:

return HttpResponseRedirect(success_url or reverse('registration_complete'))

现在负责这个的代码看起来:

        if success_url is None:
            to, args, kwargs = backend.post_registration_redirect(request, new_user)
            return redirect(to, *args, **kwargs)
        else:
            return redirect(success_url)

和 post_registration_redirect :

def post_registration_redirect(self, request, user):
    """
    Return the name of the URL to redirect to after successful
    user registration.

    """
    return ('registration_complete', (), {})

那么,如果它仍然只是简单地重定向到 'registration_complete' ,为什么会以这种方式改变呢?args 和 kwargs 是空的,为什么还要麻烦呢?

4

2 回答 2

1

情况比你想象的要简单得多。Django 应用程序(如注册)只是普通的 Python 包,可以这样导入。这意味着注册可以存在于你的 python 路径中的任何地方。通常最简单的地方是在您的根项目目录中。

那里的后端参数只需要一个 python 导入路径。添加了该参数,以便人们可以根据需要扩展 Django-Registration 以使用自定义后端。

如果您将注册目录放在 python 路径上,则现有字符串应该可以正常工作。

于 2010-06-15T19:53:20.417 回答
0

引用:

"Because my server does not allow me to install python plugins I need to 
 use 'registration' as separate django application."

这是因为您没有root访问权限吗?您是否尝试过使用virtualenv(链接到我自己的博客)来创建自己的(完全可写的)Python/Django 安装?或者,在您确实具有写入权限的地方创建一个可写目录,在那里安装 django-registration 并将您的 PYTHON_PATH 指向该位置?

IMO,您似乎太快放弃了“安装 django-registration”选项并转向更复杂的“在不同的服务器上运行它”选项。

于 2010-09-15T19:35:00.937 回答