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 ...
随机推荐
- jquery easyui的应用-1
下载地址是: www.jeasyui.com/download 当前版本是1.6.7 是由 jquery ui 扩展而来的. 像jquery ui, bootstrap, jquery easyui三 ...
- MapReduce编程:词频统计
首先在项目的src文件中需要加入以下文件,log4j的内容为: log4j.rootLogger=INFO, stdout log4j.appender.stdout=org.apache.log4j ...
- Kotlin 基本数据类型
Kotlin 的基本数值类型包括 Byte.Short.Int.Long.Float.Double 等.不同于Java的是,字符不属于数值类型,是一个独立的数据类型. 类型 位宽度 Double 64 ...
- [原][工具][windows10安装][0x800F081F]windows 10 如何离线安装.net framework3.5 || 安装出现错误代码0x800F081F时如何解决
参考解决方案:https://zhidao.baidu.com/question/1896669183365806820.html?fr=iks&word=win10%B0%B2%D7%B0+ ...
- windows平台下安装linux
win10系统下,可直接安装linux系统,且可打开linux的命令行 安装 1.开始--->微软应用商店 进入之后,在搜索框,搜索linux 在搜索结果中,选择要安装的 linux 系统 这里 ...
- OpenStack笔记
*********virsh xml文件解读****************************** https://libvirt.org/format.html https://libvirt ...
- Python自学:第二章 Python之禅
>>print import <Python之禅>,提姆·彼得斯著 美胜于丑. 显式优于隐式. 简单胜于复杂. 复杂总比复杂好. 平的比嵌套的好. 稀疏胜于稠密. 可读性计数. ...
- linux软件管理之yum管理rpm包
YUM 使用官方源 ==================================================================================== 阿里镜像站 ...
- 微信小程序 密码键盘 - 密码页面组件 (原生小程序代码)
1.WXML页面 <view> <!--<section class="mask" catchtap="canclePwd" wx:if ...
- 『TensorFlow』读书笔记_进阶卷积神经网络_分类cifar10_上
完整项目见:Github 完整项目中最终使用了ResNet进行分类,而卷积版本较本篇中结构为了提升训练效果也略有改动 本节主要介绍进阶的卷积神经网络设计相关,数据读入以及增强在下一节再与介绍 网络相关 ...