Password Validation - Require Letters and Numbers - no regex

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
from django import forms

""" slower clean() method using regex

    def clean(self, value):
        import re
        if not re.search('[a-zA-Z]+', value) or not re.search('[0-9]+', value):
            raise forms.ValidationError(u'Your password must include at least \
                                       one letter and at least one number.')
"""

# Password Field (Extends CharField) (Optimized Version)
import string
class PasswordField(forms.CharField):
    
    # Setup the Field
    def __init__(self, *args, **kwargs):
        super(PasswordField, self).__init__(min_length = 7, required = True,
                        label = u'Password',
                        widget = forms.PasswordInput(render_value = False),       
                        *args, **kwargs)
    
    # Validate - 1+ Numbers, 1+ Letters
    def clean (self, value):
        
        # Setup Our Lists of Characters and Numbers
        characters = list(string.letters)
        numbers = [str(i) for i in range(10)]
        
        # Assume False until Proven Otherwise
        numCheck = False
        charCheck = False

        # Loop until we Match        
        for char in value: 
            if not charCheck:
                if char in characters:
                    charCheck = True
            if not numCheck:
                if char in numbers:
                    numCheck = True
            if numCheck and charCheck:
                break
        
        if not numCheck or not charCheck:
            raise forms.ValidationError(u'Your password must include at least \
                                          one letter and at least one number.')

        return super(PasswordField, self).clean(value)

More like this

  1. DualPasswordForm by weijie90 4 years, 9 months ago
  2. SAS70 Compliant Password Validator by czieler 5 years, 9 months ago
  3. use oldforms validators in newforms forms by garywilson 6 years, 1 month ago
  4. develop and deploy with virtualenv by michaelnelson 1 year, 11 months ago
  5. Simple E-mail registration by bthomas 4 years, 6 months ago

Comments

kurtis (on September 22, 2011):

We forgot a very important part of this. It needs to be added on to the end of the clean function(s):

[HTML_REMOVED]return super(PasswordField, self).clean(value)[HTML_REMOVED]

#

kurtis (on September 22, 2011):

Whoops, I used the wrong syntax for the code. Anyways, here it is:

return super(PasswordField, self).clean(value)

#

fgwerhw (on September 24, 2011):

*╭╮ ╭╮  ╭╮  ││ ││  │└╮ ╭┴┴─┴Ⅲ╮~└─╯ │ ﹋ ﹋ │   ╭─────────╮ │ ∩ ∩ │ ╭╮ http://www.fullmalls.com │  ▽  │O╰╯╰─────────╯

╰─m∞m─╯

The website wholesale for many kinds of fashion shoes, like the nike,jordan,prada,, also including the jeans,shirts,bags,hat and the decorations. All the products are free shipping, and the the price is competitive, and also can accept the paypal payment.,after the payment, can ship within short time.

free shipping

competitive price

any size available

accept the paypal

jordan shoes $32

nike shox $32

Christan Audigier bikini $23

Ed Hardy Bikini $23

Smful short_t-shirt_woman $15

ed hardy short_tank_woman $16

Sandal $32

christian louboutin $80

Sunglass $15

COACH_Necklace $27

handbag $33

AF tank woman $17

puma slipper woman $30

====( http://www.fullmalls.com )=====

#

watchedman (on September 30, 2011):

Nice catch kurtis, I added in the missing line. Thanks.

#

(Forgotten your password?)