django-registration视图定制

ava*_*tar 4 django django-urls django-forms django-registration

我在我的一个项目上使用django-registration(参见:https://bitbucket.org/ubernostrum/django-registration).django-registration的标准设置是在urls.py文件中添加下面的代码

(r'^accounts/', include('registration.urls'))
Run Code Online (Sandbox Code Playgroud)

并自定义名为的文件夹中的模板registration.

上面的代码创建了注册,登录和密码恢复的链接,这很好.但是在我的项目中,我通常会添加一些其他函数给我的视图,所以如果我只是添加include('registration.urls')它,似乎我无法自定义包含这些django-registration表单的视图.

有没有办法调用django-registration视图中使用的表单,以便我可以在这些视图上添加更多内容?

Fil*_*vić 6

注册表由注册后端提供.退房registration.backends.default.DefaultBackend.

有一个get_form_class(request)返回registration.forms.RegistrationForm类的方法.您所要做的就是创建一个新的后端,继承DefaultBackend并覆盖该get_form_class()方法以返回一个新的表单类.

除了更改注册应用程序的基本行为之外,您可以通过提供自定义后端来做任何事情.如果您需要以提供custm后端不进行剪切的方式从根本上自定义视图,那么只需创建一个authnusersapp并从您认为有用的django-registration导入任何位.例如,您可以将默认模型和管理器保留在registration应用程序命名空间中,但可以在新应用程序中将自定义后端连接到您自己的内部.

  • 当然,我可以.在这里,我放弃了一个要点(https://gist.github.com/819235),我将注册后端合并到一个基于类的视图中(一个更极端的例子).每个注册过程的大多数通用都是在`RegistrationProfile`管理器上定义的.您会注意到我正在使用django-registration中提供的模型和管理器,但我提供了自己的行为.后端的API相当灵活,所以你可以通过拦截信号并提供你的`类MyBackend(DefaultBackend):来实现大多数事情,但这只是为了展示其他可能的东西. (3认同)