Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
django注册视图自定义_Django_Django Forms_Django Urls_Django Registration - Fatal编程技术网

django注册视图自定义

django注册视图自定义,django,django-forms,django-urls,django-registration,Django,Django Forms,Django Urls,Django Registration,我正在我的一个项目中使用django注册(请参阅:)。django注册的标准设置是在urls.py文件中添加下面的代码 (r'^accounts/', include('registration.urls')) 还可以在名为注册的文件夹中自定义模板 上面的代码正在创建指向注册、登录和密码恢复的链接,这很好。但在我的项目中,我通常会向视图中添加一些其他函数,因此如果我只添加include('registration.url'),似乎无法自定义包含这些django注册表的视图 是否有方法在视图中调

我正在我的一个项目中使用
django注册
(请参阅:)。django注册的标准设置是在
urls.py
文件中添加下面的代码

(r'^accounts/', include('registration.urls'))
还可以在名为
注册
的文件夹中自定义模板

上面的代码正在创建指向注册、登录和密码恢复的链接,这很好。但在我的项目中,我通常会向视图中添加一些其他函数,因此如果我只添加
include('registration.url')
,似乎无法自定义包含这些django注册表的视图


是否有方法在视图中调用django注册使用的表单,以便我可以在这些视图中添加更多内容?

注册表单由注册后端提供。签出
registration.backends.default.DefaultBackend

有一个方法
get\u form\u class(request)
返回
registration.forms.RegistrationForm
类。您所要做的就是创建一个新的后端,从
DefaultBackend
继承并重写
get\u form\u class()
方法以返回一个新的表单类


通过提供自定义后端,除了更改注册应用程序的基本行为之外,您几乎可以做任何事情。如果您需要以一种提供custm后端不会产生影响的方式从根本上自定义视图,那么只需创建一个
authn
users
应用程序,并从django注册中导入您认为有用的任何位。比如说,您可以将默认模型和管理器保留在
注册
应用程序名称空间中,但将自定义后端连接到新应用程序中您自己的内部。

如果我理解正确,您希望自定义注册表单,如果是这样,那么只需从应用程序中的存储库中复制代码,并在模块中进行必要的更改……如果没有达到要求,请回复。我不需要自定义表单,我只需要将它们放在我想要创建的视图中。例如,当我显示注册表时,我还希望添加一个自定义功能(在同一视图中),该功能将执行某种类型的跟踪。如果我没有要求太多,请您提供一个真实的示例。比如说,如果我想将注册从,或者登录表单放在一个我想创建的视图中,我该如何做呢?我不想自定义表单本身,我只想在其周围添加一些函数,这样当调用我的视图时,我的函数将与注册表或其他身份验证表单一起显示。非常感谢。我当然可以。在这里,我删除了一个gist(),将注册后端合并到一个基于类的视图中(一个更极端的例子)。每个注册流程的大多数通用内容都在
注册配置文件
管理器中定义。您会注意到,我使用的是django注册中提供的模型和管理器,但我提供了自己的行为。后端的API相当灵活,因此您可以通过截取信号并提供
类MyBackend(DefaultBackend):
来实现大部分功能,但这只是为了说明还有什么其他可能。