BBS项目知识点汇总
目录
bbs项目知识点汇总
一. JavaScript
1 替换头像
$('#mdd').on('change',function () {
// 需要利用内置对象 FileReader完成文件的读取操作
let MyFileReader = new FileReader();
// 获取用户上传的文件对象
let fileObj = $(this)[0].files[0];
// 让文件阅读器 读取文件
MyFileReader.readAsDataURL(fileObj); // IO操作 异步
// 将读取之后的内容替换到img标签src属性中
MyFileReader.onload = function(){ // 等待文件阅读器读取完毕之后再执行下面的代码
$('#img').attr('src',MyFileReader.result)
}
});
2 form表单拿数据
// 将用户输入的数据全部发送给后端 普通的键值对 文件
let MyFormData = new FormData();
// 不停的朝里面添加键值对
{#MyFormData.append('','')#}
{#console.log($('#myform').serializeArray())#}
// 普通键值对添加完毕 (利用form标签内部有一个自动序列化普通键值对方法)
$.each($('#myform').serializeArray(),function (index,obj) {
MyFormData.append(obj.name,obj.value)
});
// 手动添加文件数据
MyFormData.append('avatar',$('#mdd')[0].files[0]);
3 form组件error信息渲染
$.each(data.msg,function (index,obj) {
{#console.log(index,obj)#} // index就是报错字段 obj就是错误信息 数组的形式
// 获取报错字段 手动拼接处该字段所对应的input框的id值
let targetId = '#id_' + index;
$(targetId).next().text(obj[0]).parent().addClass('has-error')
4 添加html代码
// 将生成好的内容添加到ul标签内部
$('.list-group').append(tmp);
// 将评论框中的内容清空
$("#id_comment").val('');
// 将全局的parentid再制成空null
5 聚焦操作
$('input').focus(function () {
$(this).next().text('').parent().removeClass('has-error')
});
$('#code').click(function () {
// 获取src属性 在此基础之上 修改一下即可
var oldSrc = $(this).attr('src');
$(this).attr('src',oldSrc + '?')
});
二 . html在线编辑器
<script charset="utf-8" src="/static/kindeditor/kindeditor-all-min.js"></script>
<script>
KindEditor.ready(function (K) {
window.editor = K.create('#id_comment',{
width: '100%',
height:'450px',
resizeType:0,
uploadJson : '/upload_img/',
extraFileUploadParams : {
csrfmiddlewaretoken : '{{ csrf_token }}',
}
});
});
</script>
三 . 后端图片生成
# 下载
pip install pillow
from PIL import Image,ImageDraw,ImageFont
from io import BytesIO,StringIO
"""
内存管理器模块
BytesIO 保存数据 并且在获取的时候 是以二进制的方式给你
StringIO 保存数据 并且在获取的时候 是以字符串的方式给你
"""
"""
Image 生成图片
ImageDraw 在图片上写字
ImageFont 控制字的字体样式
"""
# (最终推导) 在图片上写字
img_obj = Image.new('RGB',(360,35),get_random())
# 将生成好的图片对象交给ImageDraw
img_draw = ImageDraw.Draw(img_obj) # 生成了一个画笔对象
# 字体样式
img_font = ImageFont.truetype('static/font/111.ttf',30)
# 随机验证码 大小写英文加数字 五位 每一位都可以是大写字母或小写字母或数字
code = ''
for i in range(5):
upper_str = chr(random.randint(65,90))
lower_str = chr(random.randint(97,122))
random_int = str(random.randint(0,9))
# 随机选取一个
tmp = random.choice([upper_str,lower_str,random_int])
# 朝图片上写一个
img_draw.text((i*60+60,0),tmp,get_random(),img_font)
# 存储写的字
code += tmp
print(code)
# 这个验证码后面其他视图函数可能要用到 找个地方存储一下 并且这个地方全局的视图函数都能访问
request.session['code'] = code
# 生成二进制数据文件对象
io_obj = BytesIO()
# 保存图片格式
img_obj.save(io_obj,'png')
# 获取到文件二进制
response = io_obj.getvalue()
# 返回数据
return HttpResponse(response)
四. 简单使用BeautifulSoup
pip install beautifulsoup4
# 导入
from bs4 import BeautifulSoup
# 先生成一个模块对象
soup = BeautifulSoup(content,'html.parser')
# print(soup.text) # 获取纯文本
tags = soup.find_all()
# print(tags)
for tag in tags:
if tag.name == 'script':
tag.decompose() # 删除标签
五 . 使用auth组件保存用户上传文件
file_obj = request.FILES.get("avatar")
request.user.avatar = file_obj
request.user.save()
六 . BBS内复杂的orm
# .当前这篇文章用户是否已经点过
is_click=models.UpAndDown.objects.filter(user=request.user,article=article_obj).exists()
models.Article.objects.filter(pk=article_id).update(up_num = F('up_num') + 1)
# 查询当前用户每一个分类及分类下的文章数
category_list = models.Category.objects.filter(blog=blog).annotate(num=Count('article')).values_list('name','num','pk')
# 2.查询当前用户每一个标签级标签下的文章数
tag_list = models.Tag.objects.filter(blog=blog).annotate(num=Count('article')).values_list('name','num','pk')
# 3.按照年月分组
from django.db.models.functions import TruncMonth
date_list = models.Article.objects.filter(blog=blog).annotate(month=TruncMonth('create_time')).values('month').annotate(num=Count('pk')).values_list('month','num')
models.Article.objects.filter(pk=article_id).update(comment_num = F('comment_num') + 1)
obj_list = []
for tag_id in tags_list:
obj_list.append(models.Article2Tag(article=article_obj,tags_id=tag_id))
models.Article2Tag.objects.bulk_create(obj_list)
BBS项目知识点汇总的更多相关文章
- Django项目知识点汇总
目录 一.wsgi接口 二.中间件 三.URL路由系统 四.Template模板 五.Views视图 六.Model&ORM 七.Admin相关 八.Http协议 九.COOKIE 与 SES ...
- nginx几个知识点汇总
WHY? 为什么用Nginx而不用LVS? 7点理由足以说明一切:1 .高并发连接: 官方测试能够支撑 5 万并发连接,在实际生产环境中跑到 2 - 3 万并发连接数.?2 .内存消耗少: 在 3 万 ...
- BBS项目详解(forms快速创建登陆页面,登陆验证、通过阅读器进行头像上传的预览、内存管理器)
BBS项目涉及的知识点 django中知识点 钩子函数(局部钩子和全局钩子) 1.局部钩子就是用来做合法性校验,比如用户名有没有被使用等 2.全局的就是用来做对比校验,比如两次输入的密码是否一致 3. ...
- auth复习和BBS项目的登录(1)
auth复习 auth组件 验证:authenticate(request,username='andy',password='123) 登录:login(request,user) 注销:login ...
- python 自动化之路 day 20 Django进阶/BBS项目【一】
一.django进阶 1.django orm 增删改查 1.1.创建表: 1 2 3 >>> from blog.models import Blog >>> b ...
- 前端开发 JavaScript 干货知识点汇总
很多初学的朋友经常问我,前端JavaScript都需要学习哪些东西呀?哪些是JavaScript的重点知识啊? 其实做前端开发工程师,所有的知识点都是我们学习必备的东西,只有扎实的技术基础才是高薪的关 ...
- 小福bbs—项目系统设计与数据库设计
这个作业属于哪个课程 班级链接 这个作业要求在哪里 作业要求的链接 团队名称 小福bbs 这个作业的目标 实现对校园论坛软件的制作,使其能够发布帖子,查看信息等 作业的正文 小福bbs--项目需求分析 ...
- ECMAScript版本知识点汇总
ECMAScript版本知识点汇总 ES5 btoa.atob 对参数进行base64格式编码.解码 /** * btoa() * base64编码 * @param {string} str * @ ...
- H5项目常见问题汇总及解决方案
H5项目常见问题汇总及解决方案 H5 2015-12-06 10:15:33 发布 您的评价: 4.5 收藏 4收藏 H5项目常见问题及注意事项 Meta基础知识: H5页 ...
随机推荐
- Win32 COM组件 x Android Service
有些书在介绍和讲解android的Service组件时,会使用后台服务一词,并且与运行在主线程的Activity相对.因为后台一词很容易误解,服务一直运行在后台?什么线程在运行?服务一直有条线程在运行 ...
- Chocolatey初体验
新电脑安装Nodejs时发现安装包提示是否自动安装Chocolatey,之前没看到过这个名词,于是搜索了下,发现Chocolatey是Windows平台的包管理工具,类似于Linux的yum/apt- ...
- svn文件被锁不能提交的解决办法
记录工作中遇到的问题,分享出来: 前端时间在提交项目到svn遇到一个问题, 提交的时候提示:文件已经锁定!如下图: 原因是我之前提交的时候不小心中途停了,导致文件被锁,然后也没在意那么多, 趁着今天有 ...
- 扛把子组20191121-3 Final阶段贡献分配规则
此作业的要求参见http://edu.cnblogs.com/campus/nenu/2019fall/homework/10063 队名:扛把子 组长:孙晓宇 组员:宋晓丽 梁梦瑶 韩昊 刘信鹏 F ...
- springboot+logback日志输出企业实践(下)
目录 1.引言 2. 输出 logback 状态数据 3. logback 异步输出日志 3.1 异步输出配置 3.2 异步输出原理 4. springboot 多环境下 logback 配置 5. ...
- Mysql数据库调优和性能优化的21条最佳实践
Mysql数据库调优和性能优化的21条最佳实践 1. 简介 在Web应用程序体系架构中,数据持久层(通常是一个关系数据库)是关键的核心部分,它对系统的性能有非常重要的影响.MySQL是目前使用最多的开 ...
- 设置属性节点(setAttribute())
setAttribute():方法将为给定元素节点添加一个新的属性值或是改变它的现有属性值: element.setAttribute(attriibuteName,attributeValue); ...
- 阿里架构师花近十年时间整理出来的Java核心知识pdf(Java岗)
由于细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容! 整理了一份Java核心知识点.覆盖了JVM.锁.并发.Java反射.Spring原理.微服务.Zooke ...
- 单例模式-python
单例模式 什么是单例 当实例化多次得到的对象中存放的属性都一样的情况,应该将多个对象指向同一个内存,即同一个实例 有什么优点 在内存里只有一个实例,减少了内存的开销,尤其是频繁的创建和销毁实例(比如管 ...
- Solr搜索引擎【索引管理】
一.索引存储 当文档提交到索引之后,directory目录组件会将它们写入到持久化存储器.Solr的目录组件具有以下重要特点: 1.隐藏持久存储的读写细节,例如,将文档写入到磁盘或通过JDBC在数据库 ...