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快速创建登陆页面,登陆验证、通过阅读器进行头像上传的预览、内存管理器)的更多相关文章

  1. vue项目上传Github预览

    最近在用Vue仿写cnode社区,想要上传到github,并通过Github pages预览,在这个过程中遇到了一些问题,因此写个笔记,以便查阅. 完成Vue项目以后,在上传到github之前,需要修 ...

  2. eclipse里面构建maven项目详解(转载)

    本文来源于:http://my.oschina.net/u/1540325/blog/548530 eclipse里面构建maven项目详解 1       环境安装及分配 Maven是基于项目对象模 ...

  3. (转载)实例详解Android快速开发工具类总结

    实例详解Android快速开发工具类总结 作者:LiJinlun 字体:[增加 减小] 类型:转载 时间:2016-01-24我要评论 这篇文章主要介绍了实例详解Android快速开发工具类总结的相关 ...

  4. 利用Intellij+MAVEN搭建Spring+Mybatis+MySql+SpringMVC项目详解

    http://blog.csdn.net/noaman_wgs/article/details/53893948 利用Intellij+MAVEN搭建Spring+Mybatis+MySql+Spri ...

  5. [转帖](整理)GNU Hurd项目详解

    (整理)GNU Hurd项目详解 http://www.ha97.com/3188.html 发表于: 开源世界 | 作者: 博客教主 标签: GNU,Hurd,详解,项目 Hurd原本是要成为GNU ...

  6. tomcat通过tomcat 安装根目录下的conf-Catalina-localhost目录发布项目详解

    tomcat通过conf-Catalina-localhost目录发布项目详解   Tomcat发布项目的方式大致有三种,但小菜认为通过在tomcat的conf/Catalina/localhost目 ...

  7. Redis 配置文件 redis.conf 项目详解

    Redis.conf 配置文件详解 # [Redis](http://yijiebuyi.com/category/redis.html) 配置文件 # 当配置中需要配置内存大小时,可以使用 1k, ...

  8. Mac下Intellij IDea发布Web项目详解一

    Mac下Intellij IDea发布Web项目详解一 Mac下Intellij IDea发布Java Web项目(适合第一次配置Tomcat的家伙们)详解二 Mac下Intellij IDea发布J ...

  9. Mac下Intellij IDea发布Java Web项目详解五 开始测试

    测试前准备工作目录 Mac下Intellij IDea发布Web项目详解一 Mac下Intellij IDea发布Java Web项目(适合第一次配置Tomcat的家伙们)详解二 Mac下Intell ...

随机推荐

  1. pm2 日常使用

    1. pm2 是什么? 日常开发中需要启动一个node项目,需要用npm run …,,如果终端被关掉,程序也就自动停止,有时候几个项目一起跑起来,好几个终端开着,个人不太喜欢,有一神器可以解决:pm ...

  2. SQL小汇总

    SQL小汇总 1.对每个时段的数据进行统计2.查询时间条件(to_date)3.插入序列号和系统时间4.查询当天.7天内.30天内5.查询前后x小时.分钟.天.月.6.保留小数点后4位7.查询字段A中 ...

  3. [BOZJ2721]樱花

    题目求\(\frac{1}{x}+\frac{1}{y}=\frac{1}{n!}\)已知n, x和y的正整数解的个数 设z=\(n!\) \(\frac{1}{x}+\frac{1}{y}=\fra ...

  4. Windows 用bat脚本带配置启动redis,并用vb脚本使其在后台运行。

    最近,在Windows上用开发PHP程序,需要用到Redis,每天要打开一个运行redis-server.exe的窗口这样比较烦,因为窗口就一直打开着,不能关闭. 所以就想着通过写脚本的方式,让他在后 ...

  5. Web开发中button与submit区别

    submit是button的一个特例,也是button的一种,它把提交这个动作自动集成了. 如果表单在点击提交按钮后需要用JS进行处理(包括输入验证)后再提交的话,通常都必须把submit改成butt ...

  6. Angular4.x Event (DOM事件和自定义事件)

    Angular组件和DOM元素通过事件与外部进行通信,两者中的事件绑定语法是相同的-(eventName)="expression": <button (click)=&qu ...

  7. ubantu下git的连接和使用

    目录 操作命令 创建仓库,并提交一个readme文件. 文件改动怎么办 版本回退 版本库(Repository) 撤销修改 删除文件 远程仓库 添加远程库 本地有一个仓库,想要在GitHub上同步这个 ...

  8. mongoengine 分页 切片与 skip + limit 的区别

    首先要了解切片与 skip 的原理 切片原理是将 index(索引) 或 cursor(游标)移动到 start 位置再 进行切分: skip原理是跳过start条数据后再获取 1. 单纯的普通分页用 ...

  9. ThinkPHP5.0源码学习之注册自动加载

    ThinkPHP5框架的自动注册加载流程如下:

  10. 传统企业IT为什么对微服务叶公好龙的心态?(转)

    这两年来,“微服务”.“云计算”.“大数据”.“人工智能”的概念在IT界成了新的宠儿:珠联壁合.声名远播.势如破竹.如日中天!从实践落地的情况来看:微服务诞生于互联网,当然是首先在互联网界遍地开花,高 ...