美文网首页
django---验证码\静态文件处理

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

作者: a荷包蛋 | 来源:发表于2018-01-10 21:42 被阅读0次

    (一)设置验证码  在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 %}

    相关文章

      网友评论

          本文标题:django---验证码\静态文件处理

          本文链接:https://www.haomeiwen.com/subject/tlsanxtx.html