2

Djangoはかなり新しく、Djangoの登録について質問がありました。

私はそれを正常に起動し、電子メール検証でユーザーを正しく登録しました。次に、特定のドメインの電子メールアドレスを持つユーザーのみが登録できるように機能を変更します。したがって、たとえば、「xyz.org」がドメインである場合、blahblahblah@xyz.org電子メールで登録しようとしたユーザーのみが成功します。

以下は、登録の成功などを除いて、これまでにすべてを処理する関連コードです。基本的に、電子メールフィールドを検証する新しいタイプのフォームオブジェクトを挿入できる必要があると思いますが、方法がわかりません。私はまだ少し荒いので、すべての冗長性は非常に高く評価されています。ありがとう!

url(r'^accounts/', include('registration.backends.default.urls')

`

{% block content %}

{% if form.errors %}
<p>Reg form errors</p>
{% endif %}

<form method="post" action=''>
{% csrf_token %}
{{ form.as_p }}

<input type="submit" value="Send activation email" />
</form>

{% endblock %}
4

1 に答える 1

3

電子メール フィールドregistration.forms.RegistrationFormのカスタムバリデータをサブクラス化して追加する必要があります。RegexValidator が機能します。

from registration.forms import RegistrationForm

class NewRegistrationForm(RegistrationForm):
    def __init__(self, *args, **kwargs):
        super(NewRegistrationForm, self).__init__(*args, **kwargs)
        self.fields['email'].validators = [validate_domain]

バリデータと新しいフォームを取得したら、この新しいフォームを登録ビューに使用する必要があります。あなたのurls.py

urlpatterns = patterns(
    ...
    url(r'^register/$', register, { 'form_class': NewRegistrationForm }, name='registration_register')
    ...
)

私はこれをテストしていませんが、あなたが正しい方向に進むことを願っています!

于 2013-01-23T22:04:32.227 に答える