zoukankan      html  css  js  c++  java
  • $Django 表设计,登陆图片验证

    pip3 install pillow #PIL
    登陆图片验证(未实现局部刷新)
    详细:https://www.cnblogs.com/qiangyuge/p/8025168.html
    def get_color():
    import random
    return (random.randint(0,255),random.randint(0,255),random.randint(0,255))
    def get_text(request):
    import random
    a=str(random.randint(0,9))
    b=chr(random.randint(65,90))
    c=chr(random.randint(97,122))
    d=''
    for i in range(5):
    d+=random.choice([a,b,c])
    request.session['code']=d
    return d
    def img_code(request):
    if request.method=='GET':
    from PIL import ImageDraw, Image,ImageFont
    from io import BytesIO
    img=Image.new('RGB',(320,30),color=get_color())
    #画字
    img_draw=ImageDraw.Draw(img)
    font=ImageFont.truetype('static/aa.TTF',size=25)
    img_draw.text((120,-5),get_text(request),get_color(),font=font,)
    f = BytesIO ()
    img.save (f, 'png')
    data = f.getvalue ()
    return HttpResponse(data)

    **********************************************************************************
    def get_valid_code(request):
        # 第一种方式
        # with open('static/img/lhf.jpg','rb') as f:
        #     # 图片二进制
        #     data=f.read()
        # return HttpResponse(data)
        # 第二种方式:随机生成一张图片
        # pip3 install Pillow
        # pillow 是一个图形处理的模块,功能很强强大
        # 生成一张图片,第一个参数是模式:RGB,第二个参数是图片大小,第三个参数是图片颜色
        # img = Image.new('RGB', (320, 35), color=get_random_color())
        # # 保存到本地
        # with open('valid_code.png', 'wb') as f:
        #     # 直接用img的save方法,第一个参数是空文件,第二个参数图片格式
        #     img.save(f, 'png')
        # # 打开文件,再返回
        # with open('valid_code.png', 'rb') as f:
        #     data = f.read()
        # return HttpResponse(data)
        # 第三种方式
        # 在内存中生成一个空文件(把它想象成 open('valid_code.png', 'wb') as f:)
        # 一个是在硬盘上,一个是在内存中
        # img = Image.new('RGB', (320, 35), color=get_random_color())
        # f = BytesIO()
        # # 把图片保存到f中
        # # 放到内存中,存取比较快,而且有自动清理
        # img.save(f, 'png')
        #
        # data = f.getvalue()
        # return HttpResponse(data)
        # 第四种方式,在图片上写文字
        img = Image.new('RGB', (320, 35), color=get_random_color())
        # 拿到画笔,把图片传入画笔
        img_draw=ImageDraw.Draw(img)
        # 生成一个字体对象,第一个参数是字体文件的路径,第二个参数是字体大小
        font=ImageFont.truetype('static/font/ss.TTF',size=25)
        # 第一个参数,xy的坐标,第二个参数:要写的文字,第三个参数:写文字的颜色,第四个参数:字体
        # 不同的字体是不同的ttf文件
        img_draw.text((0,0),'python',get_random_color(),font=font)
        f = BytesIO()
        # 把图片保存到f中
        # 放到内存中,存取比较快,而且有自动清理
        img.save(f, 'png')
        data = f.getvalue()
        return HttpResponse(data)

    表设计
      User 用户表
       -nid
       -name
       -password
       -email
       -phone
       -avatar   用户头像
       -create_date    用户注册时间
       -blog
      Blog  个人站点表
       -nid
       -title         标题
       -site_name     站点url名
       -theme     主题
      category: 文章分类表
       -nid
       -title  
       -blog   跟blog一对多
       
      tag:(文章关键字)
       -nid
       -title
       -blog    跟blog一对多
       
      article 文章表
       -nid
       -title
       -desc    摘要
       -create_time    auto_add_now:当该条记录创建时,自动添加当前时间
       -content   文章内容
       
       -category    一对多
       -tag         多对多
       -blog        一对多
       
      commit 评论表
       -nid
       -user     哪个用户
       -article  对哪篇文章
       -content   评论了什么内容
       -commit_time  时间
       
       -parent_id
       如何实现根评论与子评论?
        -有同学分析,要再建一张表,跟commit是一对多的关系(不好)
        
        -如何用这一个表,表示出根评论和子评论?
         -再加一个字段,标志,给那条评论,评论的
       
       
       
     nid user    article   content    parent_id
      
     1 1        1         111         null
     2   2        1         222         null
     3   3      1         333          1
     4   4   1         444          3
     5   3        1         反弹         4
      UpandDown 点赞表
       -nid
       -user     哪个用户
       -article  对哪篇文章
       -is_up   点赞还是点踩
       

    
    
  • 相关阅读:
    tips
    数学建模-预测模型优缺(搬运)
    数学建模-灰色预测模型GM(1,1)_MATLAB
    Floyd算法_MATLAB
    第二章 运算方法与运算器(浮点数的加减法,IEEE754标准32/64浮点规格化数)
    面向对象
    for循环
    if---else
    airflow的web任务管理
    airflow原理
  • 原文地址:https://www.cnblogs.com/3sss-ss-s/p/10028745.html
Copyright © 2011-2022 走看看