두 클래스에 대한 source에서 빠른 모습을 보여줍니다 :이 두 클래스는 너무 다른 의해 정의 된 메소드를 덮어 쓰지 볼 수 있듯이
class RegistrationFormTermsOfService(RegistrationForm):
"""
Subclass of ``RegistrationForm`` which adds a required checkbox
for agreeing to a site's Terms of Service.
"""
tos = forms.BooleanField(widget=forms.CheckboxInput,
label=_(u'I have read and agree to the Terms of Service'),
error_messages={'required': _("You must agree to the terms to register")})
class RegistrationFormUniqueEmail(RegistrationForm):
"""
Subclass of ``RegistrationForm`` which enforces uniqueness of
email addresses.
"""
def clean_email(self):
"""
Validate that the supplied email address is unique for the
site.
"""
if User.objects.filter(email__iexact=self.cleaned_data['email']):
raise forms.ValidationError(_("This email address is already in use. Please supply a different email address."))
return self.cleaned_data['email']
것은 당신이 당신 자신의 클래스를 정의 할 수 있어야한다 있는 그대로 :
from registration.forms import RegistrationFormUniqueEmail, RegistrationFormTermsOfService
class RegistrationFormTOSAndEmail(RegistrationFormUniqueEmail, RegistrationFormTermsOfService):
pass
그리고이 기능을 테스트하지는 않았습니다. 이 클래스를 어디에 둘 것인지. forms.py
은 좋은 위치입니다.
업데이트 :
우리가보기 URL 정의를 통해 몇 가지 매개 변수를 전달할 수 있다는 것을 우리에게 알려줍니다 https://django-registration.readthedocs.org/en/latest/views.html에서 약간의 독서; 예를 들어 양식 클래스. 장고 등록이 제공하는 템플릿 대신 기본 하나에
url(r'^register/$',
RegistrationView.as_view(form_class=RegistrationFormTOSAndEmail),
name='registration_register')
이 어떻게 통과 할 것'RegistrationFormTOSAndEmail' : 간단히 같은 URL을 사용합니까? – user21398
답변을 업데이트했습니다. 그러나 Google이나이 사이트를 통해 한 번만 검색하면 쉽게 답변을 찾을 수 있습니다. – EWit
여기에는 두 가지가있을 수 있습니다 : url (r^계정/'대신 url (r ^/accounts/register/$')이어야하며이 항목 앞에 반드시이 행을 넣어야합니다. url r '^ accounts /', include ('registration.backends.default.urls')), – eezis