zoukankan      html  css  js  c++  java
  • 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过滤

  • 相关阅读:
    《软件工程课程总结》
    课后作业-阅读任务-阅读笔记-4
    两个不同的网络,进行数据同步的设计思路
    IDEA清理缓存项目
    IDEA快捷键
    IDEA如何添加多个maven项目工程
    sqlserver数据库中的mdf文件太大,表空间分析和表空间释放
    关于AOP的面向切面编程
    关于.net进行爬虫
    关于调用别人接口的一些问题总结
  • 原文地址:https://www.cnblogs.com/shizhengquan/p/10601561.html
Copyright © 2011-2022 走看看