BBS项目详解(forms快速创建登陆页面,登陆验证、通过阅读器进行头像上传的预览、内存管理器)
BBS项目涉及的知识点
django中知识点
钩子函数(局部钩子和全局钩子)
1、局部钩子就是用来做合法性校验,比如用户名有没有被使用等
2、全局的就是用来做对比校验,比如两次输入的密码是否一致
3、钩子函数必须主动弹出一个错误信息,要弹出错误信息就要用到raise函数,然后使用ValidationError()模块,括号里传入错误信息,要使用ValidationError()模块就要导入这个模块 from django.core.exceptions import ValidationError
4、局部钩子函数(固定写法) : 定义方式 def clean_字段名(self),self就是当前forms对象,name = self.cleaned_data.get('name') # cleand_data就是清洗后的数据,get就是去除数据的方法,传入的参数就是要从字典中取出的字段
5、全局钩子函数(固定写法):定义方式def clean(self),后面和局部钩子的定义一样
6、error = forms.errors.get('__all__')[0] # 这里获取全局钩子函数的错误信息,就要用__all__,然后全局的错误信息可能是多个的,所以取最近的一个就是索引位是0的位置
7、路由的设计
8、富文本编辑器
9、截取摘要的时候只截取文字,去除代码,处理XSS攻击,from bs4 import BeautifulSoup # 处理XSS攻击的模块
forms函数快速创建注册页面、字段内的属性、清洗数据、解压赋值
1、要使用forms组件必须先导入 : from django import forms
2、label 就是设置程序在快速创建注册页面的时候输入框的提示文字
3、error_message 就是错误信息的提示,后面用字典形式传入,比如前面设置了最大的长度max_length=8,则字典里传'max_length': '用户名太长了',程序会自动匹配规则,如果是超过最大长度,就会返回这个最大长度的错误信息
PS:错误信息里的 required参数默认就有,如果不设定则默认是英文的字符
4、widget=widgets.TextInput(attrs={'class': 'form-control'}) widget 就是定义前端输入框的类型,后面的引用的参数是指定输入框的格式,TextInput是一个类,传入的参数attrs是一个字典,可以利用这个参数给前端的标签取类名或者id名等等来实现引用bootstrap的样式
5、调用forms组件,先实例化一个forms对象 forms = RegForms(request.POST)
6、cleand_data(‘shuju’) 就是清洗后的数据
html页面文件的知识点
1、使用forms快速生成控件,就是输入框
2、标签里的{{ form.auto_id }} 就是当点击控件的提示字符则会自动选中这个控件,定位到输入框
3、选择头像功能
4、借助文件阅读器将图片显示到页面上
5、ajax上传文件需要借助formdata对象
6、获取页面输入框内容的方法
7、juqery的for循环方法each
8、当页面再次接受数据的时候删除错误信息和效果(比如控件错误会提示错误信息和输入框变红,当我们再次选中时候就清除这些样式)
9、页面中获取全局钩子的错误信息
10、使用固定的ID名来将错误的信息在指定的输入框下局部刷新出来,然后使用链式操作加入一个jq的样式类名,让输入框错误时候变红提示
11、页面定时器触发效果
12、js获取当前时间
13、js给标签的某一个属性重新赋值
14、标签的属性值的拼接
15、JS中location对象的用法以及属性href
16、使用 from django.views.static import serve #使用这个模块来添加头像显示的地址路由,让页面能够获取头像图片
17、个人站点的样式使用
18、模板的继承
19、获取当前控件、修改控件的字符串
20、forloop创建楼层数
21、js中es6的语法实现根评论
生成随机验证码
1、内存管理器 from io import BytesIO # BytesIO这个是内存管理器,很多数据只要生成一次就不会再需要,所以要使用内存管理器,用处就是把bytes格式的数据存到内存中,使用后就清除
2、python中的图像处理模块 from PIL import Image,ImageFont,ImageDraw # 这个就是导入pillow模块下的功能,image就是图片生成功能,ImageDraw就是生成图片上的线,ImageFont就是生成字体文件的
3、Image.new 生成一张图片,img = Image.new('RGB',(300,35),get_color()) 有三个参数,分别是 mode颜色模式、size图片大小(必须先传width,再传height)、color就是图片的颜色可以传一个元组,就是rgb颜色的数值
4、ImageFont就是生成字体文件 font = ImageFont.truetype(font='static/font/hbyy.ttf',size=25) # font=传一个ttf格式的文件,size就是字体大小
5、mageDraw模块在图片上生成文字,需要生成一个对象,对象里面有text就是生成文字,line就是生成线,arc就是弧形,point就是画点
6、draw = ImageDraw.Draw(img) # 两个参数,img就是图片对象,第二参数不传也可以
7、内存管理器的使用 f = BytesIO() 这个f是一个变量名,就是创建了内存上的空间,img.save(f,'png') 将生成的图片以bytes格式写到内存空间中,data = f.getvalue() 将内存空间中的图片放入变量中然后可以返回至前端的页面
用到的模块
from django.shortcuts import render, HttpResponse,redirect #新手三件套
from bbs01.myforms import RegForms # 导入forms组件
from bbs01 import models #这个是调用 表需要导入的模块
from django.http import JsonResponse #这个是向页面返回js格式的数据
from django.contrib import auth # 导入auth模块
from django.contrib.auth import login,logout # django自带的登陆和登出功能模块
from django.db.models import Avg,Max,Sum,Min,Max,Count #django中使用聚合函数
from django.db.models.functions import TruncMonth # 把日期按照规则截断,需要调用 django.db.models.functions 下的模块
from bs4 import BeautifulSoup # 处理XSS攻击的模块
from django.contrib.auth.models import AbstractUser # 调用auth模块需要导入的模块
伪静态
静态地址就是在地址后面有一个html的后缀,当百度爬虫的时候的会收录进数据库,然后收录的权限会比较高,因为静态的地址是不会变的
如何变成伪静态:url(r'^login.html', views.login_in) 在路由里后面添加.html即可,就是为了厂商的seo优化需要伪静态
报错信息
ValueError: Database returned an invalid datetime value. Are time zone definitions for your database installed? #这个是时区问题,因为django是老外写的
PS:django存的数据时间是和我们当前时间差8个小时,因为是UTC时区,显示在页面上正常是因为django在前后交互的过程中自动转换了,所以要在settings文件里面 修改TIME_ZONE = 'UTC' 为‘Asia/Shanghai’ \ USE_TZ=False
如果在查询数据的时候有点问题,可以试试fliter过滤
BBS项目详解(forms快速创建登陆页面,登陆验证、通过阅读器进行头像上传的预览、内存管理器)的更多相关文章
- vue项目上传Github预览
最近在用Vue仿写cnode社区,想要上传到github,并通过Github pages预览,在这个过程中遇到了一些问题,因此写个笔记,以便查阅. 完成Vue项目以后,在上传到github之前,需要修 ...
- eclipse里面构建maven项目详解(转载)
本文来源于:http://my.oschina.net/u/1540325/blog/548530 eclipse里面构建maven项目详解 1 环境安装及分配 Maven是基于项目对象模 ...
- (转载)实例详解Android快速开发工具类总结
实例详解Android快速开发工具类总结 作者:LiJinlun 字体:[增加 减小] 类型:转载 时间:2016-01-24我要评论 这篇文章主要介绍了实例详解Android快速开发工具类总结的相关 ...
- 利用Intellij+MAVEN搭建Spring+Mybatis+MySql+SpringMVC项目详解
http://blog.csdn.net/noaman_wgs/article/details/53893948 利用Intellij+MAVEN搭建Spring+Mybatis+MySql+Spri ...
- [转帖](整理)GNU Hurd项目详解
(整理)GNU Hurd项目详解 http://www.ha97.com/3188.html 发表于: 开源世界 | 作者: 博客教主 标签: GNU,Hurd,详解,项目 Hurd原本是要成为GNU ...
- tomcat通过tomcat 安装根目录下的conf-Catalina-localhost目录发布项目详解
tomcat通过conf-Catalina-localhost目录发布项目详解 Tomcat发布项目的方式大致有三种,但小菜认为通过在tomcat的conf/Catalina/localhost目 ...
- Redis 配置文件 redis.conf 项目详解
Redis.conf 配置文件详解 # [Redis](http://yijiebuyi.com/category/redis.html) 配置文件 # 当配置中需要配置内存大小时,可以使用 1k, ...
- Mac下Intellij IDea发布Web项目详解一
Mac下Intellij IDea发布Web项目详解一 Mac下Intellij IDea发布Java Web项目(适合第一次配置Tomcat的家伙们)详解二 Mac下Intellij IDea发布J ...
- Mac下Intellij IDea发布Java Web项目详解五 开始测试
测试前准备工作目录 Mac下Intellij IDea发布Web项目详解一 Mac下Intellij IDea发布Java Web项目(适合第一次配置Tomcat的家伙们)详解二 Mac下Intell ...
随机推荐
- pm2 日常使用
1. pm2 是什么? 日常开发中需要启动一个node项目,需要用npm run …,,如果终端被关掉,程序也就自动停止,有时候几个项目一起跑起来,好几个终端开着,个人不太喜欢,有一神器可以解决:pm ...
- SQL小汇总
SQL小汇总 1.对每个时段的数据进行统计2.查询时间条件(to_date)3.插入序列号和系统时间4.查询当天.7天内.30天内5.查询前后x小时.分钟.天.月.6.保留小数点后4位7.查询字段A中 ...
- [BOZJ2721]樱花
题目求\(\frac{1}{x}+\frac{1}{y}=\frac{1}{n!}\)已知n, x和y的正整数解的个数 设z=\(n!\) \(\frac{1}{x}+\frac{1}{y}=\fra ...
- Windows 用bat脚本带配置启动redis,并用vb脚本使其在后台运行。
最近,在Windows上用开发PHP程序,需要用到Redis,每天要打开一个运行redis-server.exe的窗口这样比较烦,因为窗口就一直打开着,不能关闭. 所以就想着通过写脚本的方式,让他在后 ...
- Web开发中button与submit区别
submit是button的一个特例,也是button的一种,它把提交这个动作自动集成了. 如果表单在点击提交按钮后需要用JS进行处理(包括输入验证)后再提交的话,通常都必须把submit改成butt ...
- Angular4.x Event (DOM事件和自定义事件)
Angular组件和DOM元素通过事件与外部进行通信,两者中的事件绑定语法是相同的-(eventName)="expression": <button (click)=&qu ...
- ubantu下git的连接和使用
目录 操作命令 创建仓库,并提交一个readme文件. 文件改动怎么办 版本回退 版本库(Repository) 撤销修改 删除文件 远程仓库 添加远程库 本地有一个仓库,想要在GitHub上同步这个 ...
- mongoengine 分页 切片与 skip + limit 的区别
首先要了解切片与 skip 的原理 切片原理是将 index(索引) 或 cursor(游标)移动到 start 位置再 进行切分: skip原理是跳过start条数据后再获取 1. 单纯的普通分页用 ...
- ThinkPHP5.0源码学习之注册自动加载
ThinkPHP5框架的自动注册加载流程如下:
- 传统企业IT为什么对微服务叶公好龙的心态?(转)
这两年来,“微服务”.“云计算”.“大数据”.“人工智能”的概念在IT界成了新的宠儿:珠联壁合.声名远播.势如破竹.如日中天!从实践落地的情况来看:微服务诞生于互联网,当然是首先在互联网界遍地开花,高 ...