$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) **********************************************************************************
# 第一种方式
# 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)
# 不同的字体是不同的ttf文件
img_draw.text((0,0),'python',get_random_color(),font=font)
# 把图片保存到f中
# 放到内存中,存取比较快,而且有自动清理
img.save(f, 'png')
return HttpResponse(data)
表设计
User 用户表
-nid
-name
-password
-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 点赞还是点踩

随机推荐
- Linux命令(十三)make_makefile基础
1. 好处 一次编写,终身受益 2. 命名规则 makefile Makefile 3. 三要素 目标 依赖 规则命令 4. 第一版makefile 目标:依赖 tab键 规则命令 makefile: ...
- springBoot中实现自定义属性配置、实现异步调用、多环境配置
springBoot中其他相关: 1:springBoot中自定义参数: 1-1.自定义属性配置: 在application.properties中除了可以修改默认配置,我们还可以在这配置自定义的属性 ...
- koa2学习笔记
Koa -- 基于 Node.js 平台的下一代 web 开发框架 首先创建一个项目文件夹进行初始化 npm init -y 该命令执行后会生成一个package.json项目描述文件 安装koa n ...
- docker 系列 - Dock高阶知识点文章汇集
docker 技术已经研究了一段时间, 基本的知识点和使用场景比较清楚了, 还有一些比较高阶的内容未曾尝试, 将来工作中如果能用到, 再深入研究吧. 这篇博文汇总了一些有用的文章链接. ======= ...
- SpringBoot系列: 与Spring Rest服务交互数据
不管是单体应用还是微服务应用, 现在都流行Restful风格, 下图是一个比较典型的使用rest的应用架构, 该应用不仅使用database数据源, 而且用到了一个Weather微服务, 另一方面, ...
- Vertica系列:性能优化
Vertica 性能非常好, 平时基本不会碰到性能问题, 即使碰到, 优化也很容易, 而且效果往往会很好. ======================优化工具==================== ...
- 设置 img 在 div 中水平居中和垂直居中
Ø 前言 写 html + css 时,img 标签的垂直与水平居中,应该是很常见的设计.实现的方式很多,但是容易遗忘,下面分别整理了几种实现方式. 1. css 代码 <style ty ...
- 使用js请求Servlet时的路径
项目结构如下: 全是web的html页面 js部分重要代码: function ajaxValidate() { var flag=false; $.ajax({ "url":&q ...
- EF 事物Transaction简单操作
/// <summary> /// 申请提现 /// </summary> /// <param name="userId">用户id</ ...
- Docker 获取镜像 - 一
docker images docker 镜像获取方式: 1.pull 可以直接从网上拉取: 2.import 可以从现有容器打包成一个镜像: 3.commit 可以从现有容器一个镜像: 4.bu ...