django---验证码\静态文件处理

2018-01-10  本文已影响0人  a荷包蛋

(一)设置验证码  在views.py文件里定义验证码

#字体颜色随机

def rndChar():

    return chr(random.randint(65, 90))

# 随机颜色1:

def rndColor():

    return (random.randint(64, 255), random.randint(64, 255), random.randint(64, 255))

# 随机颜色2:

def rndColor2():

    return (random.randint(32, 127), random.randint(32, 127), random.randint(32, 127))

def identifying(request):                                     -------------定义验证码

    width = 60 * 4                                              ---------定义宽

    height = 60                                                   ---------定义高

    image = Image.new('RGB', (width, height), (255, 255, 255))      ------定义一个新的图片

    # 创建Font对象:

    font = ImageFont.truetype('LiberationSans-BoldItalic.ttf', 36)       -----定义字体

    # 创建Draw对象:

    draw = ImageDraw.Draw(image)           -------------------定义像素

    # 填充每个像素:

    for x in range(width):

        for y in range(height):

            draw.point((x, y), fill=rndColor())

    # 输出文字:

    codes = ' '

    for t in range(4):

        code=rndChar()

        codes += code

        draw.text((60 * t + 10, 10), code, font=font, fill=rndColor2())

    # 模糊:

    image = image.filter(ImageFilter.BLUR)

    #将验证码字符串存储到session中                  ---------为了判断用户验证码输入的是否正确

    request.session['codes'] = codes

    request.session.set_expiry(0)

    f=BytesIO()                                                 --------------图片用字节来存储

    image.save(f,'jpeg')                                    ------------提交图片

    return HttpResponse(f.getvalue(),'image/jpeg')              ----------获取图片,并定义图片的格式

(二)在登录的方法里验证

#判断验证码

    userverification=request.POST.get('identifying')

    codes=request.session['codes']

    print(codes)

    if userverification == None or codes.upper() != userverification.upper():      -----如果验证码为空或者不符合图片

        context = {'userverification_error': '验证码输入错误'}

        return render(request, 'user/login.html', context)

    url='/user/identifying'

        function checkimg(abc) {

            abc.src=url+'?num='+new Date()

        }

<img src="{%url 'user:identifying'%}" alt='验证码' style='cursor: pointer' onclick='checkimg(this)'>

(三)处理静态文件

 项目中的CSS、图片、js都是静态文件

配置静态文件

(第一步)

在settings 文件中定义静态内容

STATIC_URL = '/static/'

STATICFILES_DIRS = [

    os.path.join(BASE_DIR, 'static'),

]

在项目根目录下创建static目录,再创建当前应用名称的目录

/static/myapp/

 在模板中可以使用硬编码

/static/my_app/myexample.jpg

 在模板中可以使用static编码

{ % load static from staticfiles %}

上一篇下一篇

猜你喜欢

热点阅读