Django — свободный фреймворк для веб-приложений на языке Python
0
username = forms.RegexField(regex=r'^\w+$',
max_length=30,
widget=forms.TextInput(attrs=attrs_dict),
label=_("Username"),
error_messages={ 'invalid': _("This value must contain only letters, numbers and underscores.") })
re.compile(r"^[\w\s-]+$", re.UNICODE)
import re
from django import forms
from registration.forms import RegistrationFormUniqueEmail
from django.core.validators import RegexValidator
from django.core import validators
class RegistrationFormUtfUsername(RegistrationFormUniqueEmail):
'''
Allowed UTF8 logins
'''
def __init__(self, *args, **kwargs):
super(RegistrationFormUtfUsername, self).__init__(*args, **kwargs)
#после вызова конструктора, у нас уже появился список валидаторов, поэтому его нужно почистить для конкретного поля.
for v in self.fields['username'].validators:
if isinstance(v, RegexValidator):
self.fields['username'].validators.remove(v)
#предпологаем что ники можно задавать типа "Вася Смирнов", "Лунь-Ночной"
self.fields['username'].regex = re.compile(r"^[\w\s-]+$", re.UNICODE)
#устанавливаем новый валидатор
self.fields['username'].validators.append(validators.RegexValidator(regex=self.fields['username'].regex))
from globals.forms import RegistrationFormUtfUsername
....
urlpatterns = patterns('',
....
#registration - тут важен порядок
url(r'^accounts/register/$', 'registration.views.register', {'form_class':RegistrationFormUtfUsername, 'backend': 'registration.backends.default.DefaultBackend'}, name='registration_register'),
(r'^accounts/', include('registration.urls')),
....
)
url(r'^accounts/register/$', 'registration.views.register', {'form_class':RegistrationFormUtfUsername}, name='registration_register'),
Edited Admin (Aug. 3, 2010 02:25:34)
Offline