【问题标题】:Installing and using django-registration安装和使用 django-registration
【发布时间】:2010-06-15 18:35:24
【问题描述】:

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

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

在这个目录里面还有一个带有 DefaultBackend 类的 init 文件,类激活和注册。

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 是空的,那何必呢?

【问题讨论】:

    标签: django django-apps django-registration


    【解决方案1】:

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

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

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

    【讨论】:

    • 太棒了。我知道通常我可以省略安装部分。我只是想知道在这种情况下我是否可以(因为“后端”部分中的一些修改)做同样的事情。谢谢
    【解决方案2】:

    引用:

    "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”选项,转而使用更复杂的“在不同的服务器上运行”选项。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-19
      • 2011-11-03
      • 2011-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多