【问题标题】:Not able to add custom fields to django-registration无法将自定义字段添加到 django-registration
【发布时间】:2011-02-25 11:10:30
【问题描述】:

我扩展了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)

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

【问题讨论】:

    标签: python django django-forms django-registration


    【解决方案1】:

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

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

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

      ...

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

      ...
      { 'backend': 'registration.backends.custom.DefaultBackend' },
      ...
      
    • custom 下创建一个forms.py。根据您的喜好调整此表单(字段和验证)

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

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

    应该可以。这尤其有效,因为:

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

      def get_form_class(self, request):
          """
          Return the default form class used for user registration.
          """
          return RegistrationForm
      
    • 你也可以在该文件中导入你自己的RegistrationForm

      from registration.backends.custom.forms import RegistrationForm
      

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-12-25
          • 1970-01-01
          • 1970-01-01
          • 2015-06-19
          • 2013-06-27
          • 2010-12-26
          • 1970-01-01
          相关资源
          最近更新 更多