无法将自定义字段添加到 django-registration

发布于 2024-09-03 19:10:47 字数 839 浏览 6 评论 0原文

我扩展了 RegistrationFormUniqueEmail

class CustomRegistrationFormUniqueEmail(RegistrationFormUniqueEmail):
    first_name = forms.CharField(label=_('First name'), max_length=30,required=True)
    last_name = forms.CharField(label=_('Last name'), max_length=30, required=True)
    def save(self, profile_callback=None):
        new_user = super(CustomRegistrationFormUniqueEmail, self).save(profile_callback=profile_callback)
        new_user.first_name = self.cleaned_data['first_name']
        new_user.last_name = self.cleaned_data['last_name']
        return new_user

然后更改了视图

#       form = form_class(data=request.POST, files=request.FILES)
        form = CustomRegistrationFormUniqueEmail(data=request.POST, files=request.FILES)

但是,我仍然看到仅包含四个字段的默认表单。

I extended RegistrationFormUniqueEmail

class CustomRegistrationFormUniqueEmail(RegistrationFormUniqueEmail):
    first_name = forms.CharField(label=_('First name'), max_length=30,required=True)
    last_name = forms.CharField(label=_('Last name'), max_length=30, required=True)
    def save(self, profile_callback=None):
        new_user = super(CustomRegistrationFormUniqueEmail, self).save(profile_callback=profile_callback)
        new_user.first_name = self.cleaned_data['first_name']
        new_user.last_name = self.cleaned_data['last_name']
        return new_user

then changed view

#       form = form_class(data=request.POST, files=request.FILES)
        form = CustomRegistrationFormUniqueEmail(data=request.POST, files=request.FILES)

But, still I see default form which contains four fields only.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

自演自醉 2024-09-10 19:10:47

我们最近实施了这样一个表格。这是我们所做的:

  • 创建一个新的后端(只需从默认后端复制它即可开始)

    注册/
        后端/
            默认/
            custom/ # <- 你的新后端
    

    ...

  • 在新的urls.py 调整后端参数

    <前><代码>...
    { 'backend': 'registration.backends.custom.DefaultBackend' },
    ...

  • custom下创建一个forms.py。根据您的喜好调整此表单(字段和验证)

  • registration/urls.py 中指向正确的后端:

     # from Registration.backends.default.urls import *
     从 Registration.backends.custom.urls 导入 *
    

这应该可以工作。特别是这是有效的,因为:

  • 您的 custom/__init__.py 将有一个带有 get_form_class 方法的 DefaultBackend 类:

    def get_form_class(self, request):
        ”“”
        返回用于用户注册的默认表单类。
        ”“”
        返回登记表
    
  • 而您也在该文件中导入您自己的 RegistrationForm

    from Registration.backends.custom.forms 导入 RegistrationForm
    

We recently implemented such a form. Here's what we've done:

  • Create a new backend (just copy it from the default backend to start with)

    registration/
        backends/
            default/
            custom/ # <- your new backend
    

    ...

  • In the new urls.py adjust the backend arguments

    ...
    { 'backend': 'registration.backends.custom.DefaultBackend' },
    ...
    
  • Create a forms.py under custom. Adjust this form to your liking (fields and validations)

  • In the registration/urls.py point to the proper backend:

     # from registration.backends.default.urls import *
     from registration.backends.custom.urls import *
    

That should work. Particularly this works because:

  • Your custom/__init__.py will have a DefaultBackend class with a get_form_class method:

    def get_form_class(self, request):
        """
        Return the default form class used for user registration.
        """
        return RegistrationForm
    
  • And you import your own RegistrationForm in that file, too:

    from registration.backends.custom.forms import RegistrationForm
    
り繁华旳梦境 2024-09-10 19:10:47

我不确定,为什么它不起作用,但我很确定你不需要编辑 django-registration 的 views.py ......你可以将新的 CustomRegistrationFormUniqueEmail 作为 urls.py 中的参数传递。

I'm not sure, off hand, why it isn't working but I am pretty sure you do not need to edit django-registration's views.py ... you can pass your new CustomRegistrationFormUniqueEmail as an argument in urls.py.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文