2

シンプルなキャプチャを使用した python/django アプリケーションがあります。いくつかのアルゴリズムに従って、単純なキャプチャが表示されます。

ほぼ同じコンストラクターが 2 つあります。違いは継承だけです。コードの重複を避けるには?

class PostCaptchaForm(PostForm):
    captcha = CaptchaField()

    def __init__(self, *args, **kwargs):
        self.request = kwargs['request']
        del kwargs['request']

        super(PostCaptchaForm, self).__init__(*args, **kwargs)

    def clean(self):
        cleaned_data = super(PostCaptchaForm, self).clean()

        success = self.is_valid()
        utils.update_captcha_access(self.request, success)

        if success:
            return cleaned_data
        else:
            raise forms.ValidationError("captcha validation failed")


class ThreadCaptchaForm(ThreadForm):
    captcha = CaptchaField()  

    def __init__(self, *args, **kwargs):
        self.request = kwargs.pop('request')

        super(ThreadCaptchaForm, self).__init__(*args, **kwargs)

    def clean(self):
        cleaned_data = super(ThreadCaptchaForm, self).clean()

        success = self.is_valid()
        utils.update_captcha_access(self.request, success)

        if success:
            return cleaned_data
        else:
            raise forms.ValidationError("captcha validation failed")
4

1 に答える 1