Django形式では、ユーザーはユーザー名を設定します。フォームにユーザー名フィールドはそうのように定義されています。Regexfieldがテキスト入力を検証するには不十分です(Django形式)
username = forms.RegexField(max_length=50,regex=r'^[\[email protected] +-]+$',
help_text=_("Required. 50 characters or fewer. Letters, digits and "
"@/./+/-/_ only."),
error_messages={
'invalid': _("This value may contain only letters, numbers and "
"@/./+/-/_ characters.")})
検証は、正規表現が一致したときに発生する、それ以外の場合はありません。たとえば、ユーザ名Bender*
の設定は無効です。つまり、[email protected]
が有効です。
ユーザーがエレガントに無効にするのではなく、アラビア語またはペルシア語のテキストを入力すると、フォームが厄介なエラーをスローすることに気付きました。例えば。
UnicodeEncodeError at /keep_username/
'ascii' codec can't encode characters in position 0-5: ordinal not in range(128)
なぜテキストのこの作品は、通常のように無効になることはありません(と、私はこの問題を解決するために何ができる):1は、ユーザ名としてالعربی
をしようとすると、以下がスローされますか?
ありがとうございます!
内部用
RegexValidator
でそれを処理することができます。 –